pentesting 0.2.5 → 0.2.6

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 +60 -21
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1376,7 +1376,7 @@ const { chromium } = require('playwright');
1376
1376
  }
1377
1377
 
1378
1378
  // src/config/constants.ts
1379
- var APP_VERSION = "0.2.5";
1379
+ var APP_VERSION = "0.2.6";
1380
1380
  var APP_DESCRIPTION = "Autonomous Penetration Testing AI Agent";
1381
1381
  var LLM_API_KEY = process.env.PENTEST_API_KEY || process.env.ANTHROPIC_API_KEY || "";
1382
1382
  var LLM_BASE_URL = process.env.PENTEST_BASE_URL || void 0;
@@ -4327,6 +4327,7 @@ var App = ({ autoApprove = false, target }) => {
4327
4327
  const [elapsedTime, setElapsedTime] = useState(0);
4328
4328
  const [pendingApproval, setPendingApproval] = useState(null);
4329
4329
  const [tokenUsage, setTokenUsage] = useState({ input: 0, output: 0, total: 0 });
4330
+ const [showCommandHints, setShowCommandHints] = useState(false);
4330
4331
  const [agent] = useState(() => new AutonomousHackingAgent(void 0, { autoApprove }));
4331
4332
  const sessionManager2 = getSessionManager();
4332
4333
  const approvalManager2 = getApprovalManager({ yoloMode: autoApprove });
@@ -4397,10 +4398,15 @@ var App = ({ autoApprove = false, target }) => {
4397
4398
  setPendingApproval({
4398
4399
  id: data.id,
4399
4400
  toolName: data.toolName,
4401
+ toolInput: data.toolInput,
4400
4402
  riskLevel: data.riskLevel
4401
4403
  });
4402
4404
  addMessage(MESSAGE_TYPE.SYSTEM, `\u26A0\uFE0F APPROVAL NEEDED: ${data.toolName} (${data.riskLevel} risk)`);
4403
- addMessage(MESSAGE_TYPE.SYSTEM, " Type /approve or /deny");
4405
+ 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(", ");
4406
+ if (inputPreview) {
4407
+ addMessage(MESSAGE_TYPE.SYSTEM, ` Args: ${inputPreview}`);
4408
+ }
4409
+ addMessage(MESSAGE_TYPE.SYSTEM, " /y = approve, /n = deny, /ya = always approve");
4404
4410
  });
4405
4411
  agent.on(AGENT_EVENT.COMPLETE, () => {
4406
4412
  const duration = stopTimer();
@@ -4417,11 +4423,12 @@ var App = ({ autoApprove = false, target }) => {
4417
4423
  setPendingApproval({
4418
4424
  id: req.id,
4419
4425
  toolName: req.toolName,
4426
+ toolInput: req.toolInput,
4420
4427
  riskLevel: req.riskLevel
4421
4428
  });
4422
4429
  addMessage(MESSAGE_TYPE.SYSTEM, `\u26A0\uFE0F APPROVAL NEEDED: ${req.toolName} (${req.riskLevel} risk)`);
4423
4430
  addMessage(MESSAGE_TYPE.SYSTEM, ` ${req.reason}`);
4424
- addMessage(MESSAGE_TYPE.SYSTEM, " Type /approve or /deny");
4431
+ addMessage(MESSAGE_TYPE.SYSTEM, " /y = approve, /n = deny, /ya = always approve");
4425
4432
  });
4426
4433
  return () => {
4427
4434
  if (timerRef.current) clearInterval(timerRef.current);
@@ -4430,13 +4437,29 @@ var App = ({ autoApprove = false, target }) => {
4430
4437
  const handleSubmit = useCallback(async (value) => {
4431
4438
  const trimmed = value.trim();
4432
4439
  if (!trimmed) return;
4433
- if (pendingApproval && (trimmed === "/approve" || trimmed === "/deny" || trimmed === "/y" || trimmed === "/n")) {
4434
- const decision = trimmed === "/approve" || trimmed === "/y" ? "approve" : "deny";
4435
- approvalManager2.respond(pendingApproval.id, decision);
4436
- addMessage(MESSAGE_TYPE.SYSTEM, decision === "approve" ? "\u2713 Approved" : "\u2717 Denied");
4437
- setPendingApproval(null);
4438
- setInput("");
4439
- return;
4440
+ setShowCommandHints(false);
4441
+ if (pendingApproval) {
4442
+ if (trimmed === "/approve" || trimmed === "/y") {
4443
+ approvalManager2.respond(pendingApproval.id, "approve");
4444
+ addMessage(MESSAGE_TYPE.SYSTEM, "\u2713 Approved");
4445
+ setPendingApproval(null);
4446
+ setInput("");
4447
+ return;
4448
+ }
4449
+ if (trimmed === "/deny" || trimmed === "/n") {
4450
+ approvalManager2.respond(pendingApproval.id, "deny");
4451
+ addMessage(MESSAGE_TYPE.SYSTEM, "\u2717 Denied");
4452
+ setPendingApproval(null);
4453
+ setInput("");
4454
+ return;
4455
+ }
4456
+ if (trimmed === "/ya") {
4457
+ approvalManager2.respond(pendingApproval.id, "approve_always");
4458
+ addMessage(MESSAGE_TYPE.SYSTEM, `\u2713 Approved (always for ${pendingApproval.toolName})`);
4459
+ setPendingApproval(null);
4460
+ setInput("");
4461
+ return;
4462
+ }
4440
4463
  }
4441
4464
  if (isProcessing && !trimmed.startsWith("/")) return;
4442
4465
  setInput("");
@@ -4654,17 +4677,33 @@ var App = ({ autoApprove = false, target }) => {
4654
4677
  "s)"
4655
4678
  ] })
4656
4679
  ] })
4657
- ] }) : /* @__PURE__ */ jsxs(Box, { children: [
4658
- /* @__PURE__ */ jsx(Text, { color: THEME.status.success, children: "\u276F " }),
4659
- /* @__PURE__ */ jsx(
4660
- TextInput,
4661
- {
4662
- value: input,
4663
- onChange: setInput,
4664
- onSubmit: handleSubmit,
4665
- placeholder: "Message or /help..."
4666
- }
4667
- )
4680
+ ] }) : /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
4681
+ showCommandHints && input.startsWith("/") && /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, children: /* @__PURE__ */ jsx(Text, { dimColor: true, children: [
4682
+ "/target <ip>",
4683
+ "/start",
4684
+ "/stop",
4685
+ "/findings",
4686
+ "/sessions",
4687
+ "/yolo",
4688
+ "/clear",
4689
+ "/exit",
4690
+ pendingApproval ? "/y /n /ya" : ""
4691
+ ].filter((cmd) => cmd && cmd.toLowerCase().includes(input.toLowerCase().slice(1))).slice(0, 5).join(" \u2502 ") }) }),
4692
+ /* @__PURE__ */ jsxs(Box, { children: [
4693
+ /* @__PURE__ */ jsx(Text, { color: THEME.status.success, children: "\u276F " }),
4694
+ /* @__PURE__ */ jsx(
4695
+ TextInput,
4696
+ {
4697
+ value: input,
4698
+ onChange: (val) => {
4699
+ setInput(val);
4700
+ setShowCommandHints(val.startsWith("/") && val.length > 0);
4701
+ },
4702
+ onSubmit: handleSubmit,
4703
+ placeholder: "Message or /help..."
4704
+ }
4705
+ )
4706
+ ] })
4668
4707
  ] }),
4669
4708
  /* @__PURE__ */ jsxs(Box, { marginTop: 1, justifyContent: "space-between", children: [
4670
4709
  /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pentesting",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Autonomous Penetration Testing AI Agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",