pwn 0.5.617 → 0.5.618
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.
- checksums.yaml +4 -4
- data/README.md +95 -85
- data/README.md.bak +200 -0
- data/documentation/AI-Integration.md +42 -26
- data/documentation/AWS.md +57 -0
- data/documentation/Agent-Tool-Registry.md +56 -0
- data/documentation/Banner.md +17 -0
- data/documentation/Blockchain.md +18 -0
- data/documentation/Bounty.md +21 -0
- data/documentation/BurpSuite.md +41 -16
- data/documentation/CLI-Drivers.md +58 -0
- data/documentation/Configuration.md +66 -0
- data/documentation/Contributing.md +33 -19
- data/documentation/Cron.md +47 -0
- data/documentation/Drivers.md +43 -16
- data/documentation/Extrospection.md +54 -0
- data/documentation/FFI.md +14 -0
- data/documentation/Fuzzing.md +36 -0
- data/documentation/Hardware.md +40 -0
- data/documentation/Metasploit.md +34 -0
- data/documentation/NmapIt.md +18 -12
- data/documentation/PWN.png +0 -0
- data/documentation/PWN_Contributors_and_Users.png +0 -0
- data/documentation/Persistence.md +38 -0
- data/documentation/Plugins.md +97 -47
- data/documentation/Reporting.md +25 -18
- data/documentation/SAST.md +39 -22
- data/documentation/SDR.md +40 -0
- data/documentation/Sessions.md +39 -0
- data/documentation/Skills-Memory-Learning.md +49 -29
- data/documentation/Swarm.md +71 -0
- data/documentation/Transparent-Browser.md +26 -22
- data/documentation/Troubleshooting.md +44 -25
- data/documentation/WWW.md +32 -0
- data/documentation/diagrams/agent-tool-registry.svg +284 -0
- data/documentation/diagrams/aws-cloud-security.svg +166 -0
- data/documentation/diagrams/cron-scheduling.svg +148 -0
- data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
- data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
- data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
- data/documentation/diagrams/hardware-hacking.svg +163 -0
- data/documentation/diagrams/persistence-filesystem.svg +174 -0
- data/documentation/diagrams/sdr-radio-flow.svg +146 -0
- data/documentation/diagrams/swarm-multi-agent.svg +225 -0
- data/documentation/fax-spectrogram.png +0 -0
- data/documentation/fax-waveform.png +0 -0
- data/documentation/pwn-REPL.md +40 -24
- data/documentation/pwn-ai-Agent.md +59 -30
- data/documentation/pwn_android_war_dialer_session.png +0 -0
- data/documentation/pwn_install.png +0 -0
- data/documentation/pwn_wallpaper.jpg +0 -0
- data/documentation/ringing-spectrogram.png +0 -0
- data/documentation/ringing-waveform.png +0 -0
- data/lib/pwn/version.rb +1 -1
- data/third_party/pwn_rdoc.jsonl +22 -5
- metadata +39 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
|
3
|
+
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
|
+
-->
|
|
6
|
+
<!-- Title: PWN_Swarm Pages: 1 -->
|
|
7
|
+
<svg width="933pt" height="582pt"
|
|
8
|
+
viewBox="0.00 0.00 933.00 582.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
9
|
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 538.58)">
|
|
10
|
+
<title>PWN_Swarm</title>
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-538.58 889.54,-538.58 889.54,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="138.54" y="-473.38" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Swarm — Native Multi-Agent Orchestration</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="275.79" y="-461.93" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">personas · ask · debate · broadcast · shared bus (no daemon)</text>
|
|
14
|
+
<g id="clust1" class="cluster">
|
|
15
|
+
<title>cluster_verbs</title>
|
|
16
|
+
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M36,-292.12C36,-292.12 574,-292.12 574,-292.12 580,-292.12 586,-298.12 586,-304.12 586,-304.12 586,-363.38 586,-363.38 586,-369.38 580,-375.38 574,-375.38 574,-375.38 36,-375.38 36,-375.38 30,-375.38 24,-369.38 24,-363.38 24,-363.38 24,-304.12 24,-304.12 24,-298.12 30,-292.12 36,-292.12"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="305" y="-352.38" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Swarm Verbs  (toolset: swarm)</text>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="clust3" class="cluster">
|
|
20
|
+
<title>cluster_personas</title>
|
|
21
|
+
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M20,-149.88C20,-149.88 623,-149.88 623,-149.88 629,-149.88 635,-155.88 635,-161.88 635,-161.88 635,-233.62 635,-233.62 635,-239.62 629,-245.62 623,-245.62 623,-245.62 20,-245.62 20,-245.62 14,-245.62 8,-239.62 8,-233.62 8,-233.62 8,-161.88 8,-161.88 8,-155.88 14,-149.88 20,-149.88"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="321.5" y="-222.62" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Personas  (each = full PWN::AI::Agent::Loop)</text>
|
|
23
|
+
</g>
|
|
24
|
+
<g id="clust5" class="cluster">
|
|
25
|
+
<title>cluster_state</title>
|
|
26
|
+
<path fill="#422006" stroke="#a16207" stroke-width="2" d="M33,-8C33,-8 642,-8 642,-8 648,-8 654,-14 654,-20 654,-20 654,-91.38 654,-91.38 654,-97.38 648,-103.38 642,-103.38 642,-103.38 33,-103.38 33,-103.38 27,-103.38 21,-97.38 21,-91.38 21,-91.38 21,-20 21,-20 21,-14 27,-8 33,-8"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="337.5" y="-80.38" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Shared State  ~/.pwn/</text>
|
|
28
|
+
</g>
|
|
29
|
+
<!-- Orchestrator -->
|
|
30
|
+
<g id="node1" class="node">
|
|
31
|
+
<title>Orchestrator</title>
|
|
32
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M308.75,-456.38C308.75,-456.38 237.25,-456.38 237.25,-456.38 231.25,-456.38 225.25,-450.38 225.25,-444.38 225.25,-444.38 225.25,-432.38 225.25,-432.38 225.25,-426.38 231.25,-420.38 237.25,-420.38 237.25,-420.38 308.75,-420.38 308.75,-420.38 314.75,-420.38 320.75,-426.38 320.75,-432.38 320.75,-432.38 320.75,-444.38 320.75,-444.38 320.75,-450.38 314.75,-456.38 308.75,-456.38"/>
|
|
33
|
+
<text xml:space="preserve" text-anchor="middle" x="273" y="-441.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">👤  Orchestrator</text>
|
|
34
|
+
<text xml:space="preserve" text-anchor="middle" x="273" y="-427.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(you, in pwn-ai)</text>
|
|
35
|
+
</g>
|
|
36
|
+
<!-- Spawn -->
|
|
37
|
+
<g id="node2" class="node">
|
|
38
|
+
<title>Spawn</title>
|
|
39
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M107.62,-336.12C107.62,-336.12 44.38,-336.12 44.38,-336.12 38.38,-336.12 32.38,-330.12 32.38,-324.12 32.38,-324.12 32.38,-312.12 32.38,-312.12 32.38,-306.12 38.38,-300.12 44.38,-300.12 44.38,-300.12 107.62,-300.12 107.62,-300.12 113.62,-300.12 119.62,-306.12 119.62,-312.12 119.62,-312.12 119.62,-324.12 119.62,-324.12 119.62,-330.12 113.62,-336.12 107.62,-336.12"/>
|
|
40
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_spawn</text>
|
|
41
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">define persona</text>
|
|
42
|
+
</g>
|
|
43
|
+
<!-- Orchestrator->Spawn -->
|
|
44
|
+
<g id="edge1" class="edge">
|
|
45
|
+
<title>Orchestrator->Spawn</title>
|
|
46
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M229.09,-419.75C203.18,-408.56 170.23,-392.9 143,-375.38 128.4,-365.98 113.49,-353.77 101.45,-343.12"/>
|
|
47
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="103.63,-341.32 95.81,-338.05 99.88,-345.48 103.63,-341.32"/>
|
|
48
|
+
</g>
|
|
49
|
+
<!-- Ask -->
|
|
50
|
+
<g id="node3" class="node">
|
|
51
|
+
<title>Ask</title>
|
|
52
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M263.5,-336.12C263.5,-336.12 178.5,-336.12 178.5,-336.12 172.5,-336.12 166.5,-330.12 166.5,-324.12 166.5,-324.12 166.5,-312.12 166.5,-312.12 166.5,-306.12 172.5,-300.12 178.5,-300.12 178.5,-300.12 263.5,-300.12 263.5,-300.12 269.5,-300.12 275.5,-306.12 275.5,-312.12 275.5,-312.12 275.5,-324.12 275.5,-324.12 275.5,-330.12 269.5,-336.12 263.5,-336.12"/>
|
|
53
|
+
<text xml:space="preserve" text-anchor="middle" x="221" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_ask</text>
|
|
54
|
+
<text xml:space="preserve" text-anchor="middle" x="221" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">1 turn → 1 persona</text>
|
|
55
|
+
</g>
|
|
56
|
+
<!-- Orchestrator->Ask -->
|
|
57
|
+
<g id="edge2" class="edge">
|
|
58
|
+
<title>Orchestrator->Ask</title>
|
|
59
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M265.33,-419.93C256.72,-400.36 242.68,-368.42 232.7,-345.74"/>
|
|
60
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="235.28,-344.64 229.5,-338.45 230.15,-346.9 235.28,-344.64"/>
|
|
61
|
+
</g>
|
|
62
|
+
<!-- Debate -->
|
|
63
|
+
<g id="node4" class="node">
|
|
64
|
+
<title>Debate</title>
|
|
65
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M419.5,-336.12C419.5,-336.12 334.5,-336.12 334.5,-336.12 328.5,-336.12 322.5,-330.12 322.5,-324.12 322.5,-324.12 322.5,-312.12 322.5,-312.12 322.5,-306.12 328.5,-300.12 334.5,-300.12 334.5,-300.12 419.5,-300.12 419.5,-300.12 425.5,-300.12 431.5,-306.12 431.5,-312.12 431.5,-312.12 431.5,-324.12 431.5,-324.12 431.5,-330.12 425.5,-336.12 419.5,-336.12"/>
|
|
66
|
+
<text xml:space="preserve" text-anchor="middle" x="377" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_debate</text>
|
|
67
|
+
<text xml:space="preserve" text-anchor="middle" x="377" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">round-robin critique</text>
|
|
68
|
+
</g>
|
|
69
|
+
<!-- Orchestrator->Debate -->
|
|
70
|
+
<g id="edge3" class="edge">
|
|
71
|
+
<title>Orchestrator->Debate</title>
|
|
72
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M288.35,-419.93C305.78,-400.1 334.4,-367.56 354.39,-344.83"/>
|
|
73
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="356.41,-346.77 359.59,-338.92 352.21,-343.08 356.41,-346.77"/>
|
|
74
|
+
</g>
|
|
75
|
+
<!-- Broadcast -->
|
|
76
|
+
<g id="node5" class="node">
|
|
77
|
+
<title>Broadcast</title>
|
|
78
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M565.62,-336.12C565.62,-336.12 490.38,-336.12 490.38,-336.12 484.38,-336.12 478.38,-330.12 478.38,-324.12 478.38,-324.12 478.38,-312.12 478.38,-312.12 478.38,-306.12 484.38,-300.12 490.38,-300.12 490.38,-300.12 565.62,-300.12 565.62,-300.12 571.62,-300.12 577.62,-306.12 577.62,-312.12 577.62,-312.12 577.62,-324.12 577.62,-324.12 577.62,-330.12 571.62,-336.12 565.62,-336.12"/>
|
|
79
|
+
<text xml:space="preserve" text-anchor="middle" x="528" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_broadcast</text>
|
|
80
|
+
<text xml:space="preserve" text-anchor="middle" x="528" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">fan-out ensemble</text>
|
|
81
|
+
</g>
|
|
82
|
+
<!-- Orchestrator->Broadcast -->
|
|
83
|
+
<g id="edge4" class="edge">
|
|
84
|
+
<title>Orchestrator->Broadcast</title>
|
|
85
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M321.14,-425.63C358.9,-415.34 412.06,-398.42 455,-375.38 471.5,-366.52 488.17,-354.01 501.41,-343.03"/>
|
|
86
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="502.98,-345.36 507.27,-338.06 499.36,-341.09 502.98,-345.36"/>
|
|
87
|
+
</g>
|
|
88
|
+
<!-- Red -->
|
|
89
|
+
<g id="node6" class="node">
|
|
90
|
+
<title>Red</title>
|
|
91
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M124.12,-206.38C124.12,-206.38 27.88,-206.38 27.88,-206.38 21.88,-206.38 15.88,-200.38 15.88,-194.38 15.88,-194.38 15.88,-169.88 15.88,-169.88 15.88,-163.88 21.88,-157.88 27.88,-157.88 27.88,-157.88 124.12,-157.88 124.12,-157.88 130.12,-157.88 136.12,-163.88 136.12,-169.88 136.12,-169.88 136.12,-194.38 136.12,-194.38 136.12,-200.38 130.12,-206.38 124.12,-206.38"/>
|
|
92
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🔴  red_team</text>
|
|
93
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: grok</text>
|
|
94
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: terminal,pwn</text>
|
|
95
|
+
</g>
|
|
96
|
+
<!-- Spawn->Red -->
|
|
97
|
+
<!-- Agents -->
|
|
98
|
+
<g id="node10" class="node">
|
|
99
|
+
<title>Agents</title>
|
|
100
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M122.62,-59.75C122.62,-62.16 101.73,-64.12 76,-64.12 50.27,-64.12 29.38,-62.16 29.38,-59.75 29.38,-59.75 29.38,-20.38 29.38,-20.38 29.38,-17.96 50.27,-16 76,-16 101.73,-16 122.62,-17.96 122.62,-20.38 122.62,-20.38 122.62,-59.75 122.62,-59.75"/>
|
|
101
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M122.62,-59.75C122.62,-57.34 101.73,-55.38 76,-55.38 50.27,-55.38 29.38,-57.34 29.38,-59.75"/>
|
|
102
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agents.yml</text>
|
|
103
|
+
<text xml:space="preserve" text-anchor="middle" x="76" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">persona registry</text>
|
|
104
|
+
</g>
|
|
105
|
+
<!-- Spawn->Agents -->
|
|
106
|
+
<g id="edge15" class="edge">
|
|
107
|
+
<title>Spawn->Agents</title>
|
|
108
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M118.01,-299.52C126.18,-296.65 134.77,-294.01 143,-292.12 252.43,-267.12 570.37,-328.57 646,-245.62 674.67,-214.18 674.66,-181.33 646,-149.88 627.25,-129.29 172.57,-114.39 147,-103.38 130.38,-96.22 114.9,-83.65 102.66,-71.67"/>
|
|
109
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="104.82,-69.88 97.22,-66.14 100.83,-73.81 104.82,-69.88"/>
|
|
110
|
+
<text xml:space="preserve" text-anchor="middle" x="677.25" y="-178.82" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">write</text>
|
|
111
|
+
</g>
|
|
112
|
+
<!-- Ask->Red -->
|
|
113
|
+
<g id="edge6" class="edge">
|
|
114
|
+
<title>Ask->Red</title>
|
|
115
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M202.04,-299.61C178.41,-277.76 137.62,-240.07 108.85,-213.48"/>
|
|
116
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="111.03,-211.69 103.26,-208.32 107.23,-215.8 111.03,-211.69"/>
|
|
117
|
+
</g>
|
|
118
|
+
<!-- Blue -->
|
|
119
|
+
<g id="node7" class="node">
|
|
120
|
+
<title>Blue</title>
|
|
121
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M277,-206.38C277,-206.38 195,-206.38 195,-206.38 189,-206.38 183,-200.38 183,-194.38 183,-194.38 183,-169.88 183,-169.88 183,-163.88 189,-157.88 195,-157.88 195,-157.88 277,-157.88 277,-157.88 283,-157.88 289,-163.88 289,-169.88 289,-169.88 289,-194.38 289,-194.38 289,-200.38 283,-206.38 277,-206.38"/>
|
|
122
|
+
<text xml:space="preserve" text-anchor="middle" x="236" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🔵  blue_team</text>
|
|
123
|
+
<text xml:space="preserve" text-anchor="middle" x="236" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: anthropic</text>
|
|
124
|
+
<text xml:space="preserve" text-anchor="middle" x="236" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: pwn,extro</text>
|
|
125
|
+
</g>
|
|
126
|
+
<!-- Debate->Blue -->
|
|
127
|
+
<g id="edge7" class="edge">
|
|
128
|
+
<title>Debate->Blue</title>
|
|
129
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M358.57,-299.61C335.68,-277.86 296.25,-240.39 268.3,-213.82"/>
|
|
130
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="270.26,-211.82 262.53,-208.34 266.4,-215.88 270.26,-211.82"/>
|
|
131
|
+
</g>
|
|
132
|
+
<!-- Recon -->
|
|
133
|
+
<g id="node8" class="node">
|
|
134
|
+
<title>Recon</title>
|
|
135
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M463.5,-206.38C463.5,-206.38 348.5,-206.38 348.5,-206.38 342.5,-206.38 336.5,-200.38 336.5,-194.38 336.5,-194.38 336.5,-169.88 336.5,-169.88 336.5,-163.88 342.5,-157.88 348.5,-157.88 348.5,-157.88 463.5,-157.88 463.5,-157.88 469.5,-157.88 475.5,-163.88 475.5,-169.88 475.5,-169.88 475.5,-194.38 475.5,-194.38 475.5,-200.38 469.5,-206.38 463.5,-206.38"/>
|
|
136
|
+
<text xml:space="preserve" text-anchor="middle" x="406" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🛰  recon</text>
|
|
137
|
+
<text xml:space="preserve" text-anchor="middle" x="406" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: ollama</text>
|
|
138
|
+
<text xml:space="preserve" text-anchor="middle" x="406" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: terminal,memory</text>
|
|
139
|
+
</g>
|
|
140
|
+
<!-- Debate->Recon -->
|
|
141
|
+
<g id="edge8" class="edge">
|
|
142
|
+
<title>Debate->Recon</title>
|
|
143
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M380.79,-299.61C385.34,-278.6 393.06,-242.92 398.76,-216.57"/>
|
|
144
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="401.47,-217.31 400.42,-208.9 395.99,-216.13 401.47,-217.31"/>
|
|
145
|
+
</g>
|
|
146
|
+
<!-- Xpl -->
|
|
147
|
+
<g id="node9" class="node">
|
|
148
|
+
<title>Xpl</title>
|
|
149
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M615.25,-206.38C615.25,-206.38 534.75,-206.38 534.75,-206.38 528.75,-206.38 522.75,-200.38 522.75,-194.38 522.75,-194.38 522.75,-169.88 522.75,-169.88 522.75,-163.88 528.75,-157.88 534.75,-157.88 534.75,-157.88 615.25,-157.88 615.25,-157.88 621.25,-157.88 627.25,-163.88 627.25,-169.88 627.25,-169.88 627.25,-194.38 627.25,-194.38 627.25,-200.38 621.25,-206.38 615.25,-206.38"/>
|
|
150
|
+
<text xml:space="preserve" text-anchor="middle" x="575" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">💥  exploit_dev</text>
|
|
151
|
+
<text xml:space="preserve" text-anchor="middle" x="575" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: openai</text>
|
|
152
|
+
<text xml:space="preserve" text-anchor="middle" x="575" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: pwn,skills</text>
|
|
153
|
+
</g>
|
|
154
|
+
<!-- Broadcast->Xpl -->
|
|
155
|
+
<g id="edge9" class="edge">
|
|
156
|
+
<title>Broadcast->Xpl</title>
|
|
157
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M534.14,-299.61C541.55,-278.5 554.14,-242.6 563.39,-216.22"/>
|
|
158
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="565.98,-217.31 565.98,-208.84 560.69,-215.46 565.98,-217.31"/>
|
|
159
|
+
</g>
|
|
160
|
+
<!-- Red->Agents -->
|
|
161
|
+
<!-- Bus -->
|
|
162
|
+
<g id="node11" class="node">
|
|
163
|
+
<title>Bus</title>
|
|
164
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M288,-59.75C288,-62.16 261.56,-64.12 229,-64.12 196.44,-64.12 170,-62.16 170,-59.75 170,-59.75 170,-20.38 170,-20.38 170,-17.96 196.44,-16 229,-16 261.56,-16 288,-17.96 288,-20.38 288,-20.38 288,-59.75 288,-59.75"/>
|
|
165
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M288,-59.75C288,-57.34 261.56,-55.38 229,-55.38 196.44,-55.38 170,-57.34 170,-59.75"/>
|
|
166
|
+
<text xml:space="preserve" text-anchor="middle" x="229" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">swarm/<id>/bus.jsonl</text>
|
|
167
|
+
<text xml:space="preserve" text-anchor="middle" x="229" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">append-only chat</text>
|
|
168
|
+
</g>
|
|
169
|
+
<!-- Red->Bus -->
|
|
170
|
+
<g id="edge11" class="edge">
|
|
171
|
+
<title>Red->Bus</title>
|
|
172
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M101.95,-157.37C127.86,-133.65 167.76,-97.12 195.92,-71.34"/>
|
|
173
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="197.71,-73.5 201.72,-66.03 193.93,-69.37 197.71,-73.5"/>
|
|
174
|
+
<text xml:space="preserve" text-anchor="middle" x="174.91" y="-113.33" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">append reply</text>
|
|
175
|
+
</g>
|
|
176
|
+
<!-- Blue->Bus -->
|
|
177
|
+
<g id="edge12" class="edge">
|
|
178
|
+
<title>Blue->Bus</title>
|
|
179
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M234.81,-157.37C233.67,-134.49 231.93,-99.69 230.65,-74.12"/>
|
|
180
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="233.46,-74.29 230.27,-66.44 227.87,-74.57 233.46,-74.29"/>
|
|
181
|
+
</g>
|
|
182
|
+
<!-- Pmap -->
|
|
183
|
+
<g id="node12" class="node">
|
|
184
|
+
<title>Pmap</title>
|
|
185
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M477.38,-59.75C477.38,-62.16 445.38,-64.12 406,-64.12 366.62,-64.12 334.62,-62.16 334.62,-59.75 334.62,-59.75 334.62,-20.38 334.62,-20.38 334.62,-17.96 366.62,-16 406,-16 445.38,-16 477.38,-17.96 477.38,-20.38 477.38,-20.38 477.38,-59.75 477.38,-59.75"/>
|
|
186
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M477.38,-59.75C477.38,-57.34 445.38,-55.38 406,-55.38 366.62,-55.38 334.62,-57.34 334.62,-59.75"/>
|
|
187
|
+
<text xml:space="preserve" text-anchor="middle" x="406" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">swarm/<id>/personas.json</text>
|
|
188
|
+
<text xml:space="preserve" text-anchor="middle" x="406" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name → session_id</text>
|
|
189
|
+
</g>
|
|
190
|
+
<!-- Recon->Pmap -->
|
|
191
|
+
<g id="edge13" class="edge">
|
|
192
|
+
<title>Recon->Pmap</title>
|
|
193
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M406,-157.37C406,-134.49 406,-99.69 406,-74.12"/>
|
|
194
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="408.8,-74.44 406,-66.44 403.2,-74.44 408.8,-74.44"/>
|
|
195
|
+
</g>
|
|
196
|
+
<!-- Sess -->
|
|
197
|
+
<g id="node13" class="node">
|
|
198
|
+
<title>Sess</title>
|
|
199
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M645.88,-59.75C645.88,-62.16 618.59,-64.12 585,-64.12 551.41,-64.12 524.12,-62.16 524.12,-59.75 524.12,-59.75 524.12,-20.38 524.12,-20.38 524.12,-17.96 551.41,-16 585,-16 618.59,-16 645.88,-17.96 645.88,-20.38 645.88,-20.38 645.88,-59.75 645.88,-59.75"/>
|
|
200
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M645.88,-59.75C645.88,-57.34 618.59,-55.38 585,-55.38 551.41,-55.38 524.12,-57.34 524.12,-59.75"/>
|
|
201
|
+
<text xml:space="preserve" text-anchor="middle" x="585" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">sessions/*.jsonl</text>
|
|
202
|
+
<text xml:space="preserve" text-anchor="middle" x="585" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">per-persona transcript</text>
|
|
203
|
+
</g>
|
|
204
|
+
<!-- Xpl->Sess -->
|
|
205
|
+
<g id="edge14" class="edge">
|
|
206
|
+
<title>Xpl->Sess</title>
|
|
207
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M576.7,-157.37C578.33,-134.49 580.81,-99.69 582.64,-74.12"/>
|
|
208
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="585.41,-74.61 583.19,-66.43 579.83,-74.21 585.41,-74.61"/>
|
|
209
|
+
</g>
|
|
210
|
+
<!-- Bus->Orchestrator -->
|
|
211
|
+
<g id="edge17" class="edge">
|
|
212
|
+
<title>Bus->Orchestrator</title>
|
|
213
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M251.75,-64.53C267.03,-78.61 288.44,-95.3 311,-103.38 333.3,-111.36 500.42,-109.2 524,-111.38 582.38,-116.76 746.69,-105.5 785,-149.88 870.27,-248.64 717.36,-324.97 597,-375.38 508.69,-412.36 397.56,-427.48 331.06,-433.52"/>
|
|
214
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="330.87,-430.72 323.15,-434.21 331.36,-436.3 330.87,-430.72"/>
|
|
215
|
+
<text xml:space="preserve" text-anchor="middle" x="819.71" y="-255.57" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">swarm_bus()</text>
|
|
216
|
+
</g>
|
|
217
|
+
<!-- Bus->Debate -->
|
|
218
|
+
<g id="edge16" class="edge">
|
|
219
|
+
<title>Bus->Debate</title>
|
|
220
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M252.68,-64.52C268.01,-78.23 289.12,-94.52 311,-103.38 391.29,-135.88 640.52,-85.08 698,-149.88 726.24,-181.71 725.12,-212.83 698,-245.62 627.93,-330.37 561.55,-264.96 455,-292.12 449.62,-293.5 444.06,-295.03 438.5,-296.65"/>
|
|
221
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="437.94,-293.9 431.08,-298.87 439.55,-299.26 437.94,-293.9"/>
|
|
222
|
+
<text xml:space="preserve" text-anchor="middle" x="746.13" y="-178.82" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tail → context</text>
|
|
223
|
+
</g>
|
|
224
|
+
</g>
|
|
225
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
data/documentation/pwn-REPL.md
CHANGED
|
@@ -1,33 +1,49 @@
|
|
|
1
|
-
# The pwn REPL
|
|
1
|
+
# The `pwn` REPL
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`pwn` launches a **Pry** session with the entire `PWN::` namespace already
|
|
4
|
+
`require`d, a themed prompt, a persistent history file, and a set of custom
|
|
5
|
+
commands.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+

|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
pwn
|
|
9
|
-
pwn[v0.5.613]:001 >>>
|
|
10
|
-
```
|
|
9
|
+
## Why Pry (not IRB)?
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
- `ls PWN::Plugins::BurpSuite` — instant method listing
|
|
12
|
+
- `show-source` / `show-doc` — read any plugin without leaving the shell
|
|
13
|
+
- `edit -m` — patch a method live and retry
|
|
14
|
+
- `wtf?` — full backtrace of the last exception
|
|
15
|
+
- `history --replay 5..12` — re-run a range of lines
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
- Tab completion for classes and methods.
|
|
16
|
-
- Multi-line support.
|
|
17
|
-
- Easy prototyping of security workflows.
|
|
18
|
-
- `PWN.help` and inspection of any object.
|
|
17
|
+
## Custom commands
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
| Command | Implemented in | Purpose |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `pwn-ai` | `Agent::Loop` | Enter the AI agent TUI |
|
|
22
|
+
| `pwn-asm` | `Plugins::Assembly` | Multiline asm ↔ opcodes workbench |
|
|
23
|
+
| `pwn-ai-memory` | `PWN::Memory` | View/edit persistent memory |
|
|
24
|
+
| `pwn-ai-sessions` | `PWN::Sessions` | List/view/delete transcripts |
|
|
25
|
+
| `pwn-ai-cron` | `PWN::Cron` | List/run/toggle scheduled jobs |
|
|
26
|
+
| `pwn-ai-delegate` | `Agent::Swarm` | Send one request to a persona |
|
|
27
|
+
| `welcome-banner` | `PWN::Banner` | Redraw a random banner |
|
|
28
|
+
| `toggle-pager` | Pry | Page long output on/off |
|
|
21
29
|
|
|
22
|
-
|
|
23
|
-
pwn[v0.5.613]:001 >>> PWN::Plugins.constants.sort
|
|
24
|
-
pwn[v0.5.613]:001 >>> PWN::Plugins::BurpSuite.methods(false).sort
|
|
25
|
-
pwn[v0.5.613]:001 >>> PWN::SAST.constants
|
|
26
|
-
pwn[v0.5.613]:001 >>> pwn-ai
|
|
27
|
-
```
|
|
30
|
+
## Multi-line input
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
- [pwn-ai Agent](pwn-ai-Agent.md) — the killer feature inside the REPL
|
|
31
|
-
- [General Usage](General-PWN-Usage.md)
|
|
32
|
+
`pwn-ai` and `pwn-asm` use a custom `PWNMultiLineInput` reader:
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
- **SHIFT + ENTER** → insert newline
|
|
35
|
+
- **ENTER** → submit
|
|
36
|
+
|
|
37
|
+
> **tmux users:** requires `set -s extended-keys on` **and**
|
|
38
|
+
> `set -as terminal-features '<outerTERM>*:extkeys'` — see
|
|
39
|
+
> [Troubleshooting](Troubleshooting.md#shiftenter-submits-instead-of-newline).
|
|
40
|
+
|
|
41
|
+
## History → Driver
|
|
42
|
+
|
|
43
|
+
`~/.pwn_history` captures every line you type. When a sequence works, turn it
|
|
44
|
+
into a shipped `bin/pwn_*` driver — see
|
|
45
|
+
[From REPL History to Driver](Drivers.md).
|
|
46
|
+
|
|
47
|
+
**Next:** [pwn-ai Agent](pwn-ai-Agent.md) · [CLI Drivers](CLI-Drivers.md)
|
|
48
|
+
|
|
49
|
+
[← Home](Home.md)
|
|
@@ -1,43 +1,72 @@
|
|
|
1
|
-
# pwn-ai Autonomous Agent
|
|
1
|
+
# `pwn-ai` — The Autonomous Agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`pwn-ai` is a natural-language front end to everything in `PWN::`. You describe
|
|
4
|
+
the goal; the agent plans a sequence of tool calls (`pwn_eval`, `shell`,
|
|
5
|
+
`memory_*`, `skill_*`, `extro_*`, `agent_*`, …), executes them against the live
|
|
6
|
+
process, observes the results, and loops until it can give you a final answer.
|
|
4
7
|
|
|
5
|
-
##
|
|
8
|
+
## Two ways to run it
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
# 1. Interactive TUI (inside the pwn REPL)
|
|
12
|
+
pwn[v0.5.616]:001 >>> pwn-ai
|
|
13
|
+
✨ pwn-ai · anthropic · session 20260707_220802_3f39791f
|
|
14
|
+
> Use NmapIt to sweep 10.0.0.0/24, then TransparentBrowser via Burp on any
|
|
15
|
+
host with 443 open, active-scan, and give me a Reports::SAST summary.
|
|
16
|
+
```
|
|
6
17
|
|
|
7
18
|
```bash
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
>
|
|
19
|
+
# 2. Headless one-shot (CI-friendly)
|
|
20
|
+
$ pwn --ai "run bin/pwn_sast against ./src and push findings to DefectDojo"
|
|
11
21
|
```
|
|
12
22
|
|
|
13
|
-
##
|
|
23
|
+
## Anatomy of a turn
|
|
14
24
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- Persistent context across interactions via memory and skills.
|
|
25
|
+
1. **PromptBuilder** assembles the system prompt: your request + MEMORY block +
|
|
26
|
+
SKILLS list + LEARNING stats + EXTROSPECTION block.
|
|
27
|
+
2. **Loop** sends it to the active `PWN::AI::<Engine>` client.
|
|
28
|
+
3. Provider replies with `tool_calls` → **Dispatch** executes each one via the
|
|
29
|
+
[Registry](Agent-Tool-Registry.md), **Metrics** records duration/success.
|
|
30
|
+
4. Results are appended to the message list; go to 2.
|
|
31
|
+
5. When the reply has *no* tool_calls it's the **final answer** →
|
|
32
|
+
`Learning.auto_reflect` and `Extrospection.auto_extrospect` fire (if
|
|
33
|
+
enabled), transcript is flushed to `~/.pwn/sessions/`.
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
## What the agent can call
|
|
38
|
+
|
|
39
|
+
10 toolsets · 45+ tools — full table at
|
|
40
|
+
[Agent Tool Registry](Agent-Tool-Registry.md).
|
|
27
41
|
|
|
28
|
-
|
|
29
|
-
- `ENTER` submits the prompt.
|
|
30
|
-
- Type `back` or `exit` to return to normal REPL.
|
|
31
|
-
- Example prompt:
|
|
32
|
-
```
|
|
33
|
-
Scan https://target with NmapIt + TransparentBrowser (via BurpSuite),
|
|
34
|
-
run relevant SAST if source present, exploit any findings, generate report.
|
|
35
|
-
```
|
|
42
|
+
The two that matter most:
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
| Tool | Reach |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `pwn_eval` | **Any** Ruby in-process — the whole `PWN::` namespace, `require`, monkey-patch, everything |
|
|
47
|
+
| `shell` | **Any** OS command on the host |
|
|
48
|
+
|
|
49
|
+
Everything else (memory, skills, learning, extrospection, cron, swarm,
|
|
50
|
+
sessions, metrics) is a convenience wrapper the model can discover from the
|
|
51
|
+
schema alone.
|
|
52
|
+
|
|
53
|
+
## Delegating to other agents
|
|
54
|
+
|
|
55
|
+
`agent_ask`, `agent_debate`, `agent_broadcast` spin up **sub-agents** (each a
|
|
56
|
+
full `Loop.run` under a persona overlay) that share a JSONL bus. See
|
|
57
|
+
[Swarm](Swarm.md).
|
|
58
|
+
|
|
59
|
+
## Tips
|
|
38
60
|
|
|
39
|
-
|
|
61
|
+
- SHIFT+ENTER = newline, ENTER = submit.
|
|
62
|
+
- `back` / `exit` returns to the plain REPL.
|
|
63
|
+
- Set `ai.agent.max_iters` in `~/.pwn/config.yml` if long tasks get truncated.
|
|
64
|
+
- Disable `auto_reflect` during noisy fuzz loops
|
|
65
|
+
(`learning_auto_reflect_toggle(enabled: false)`), re-enable for the summary
|
|
66
|
+
turn.
|
|
40
67
|
|
|
41
|
-
See also [AI Integration](AI-Integration.md)
|
|
68
|
+
**See also:** [AI Integration](AI-Integration.md) ·
|
|
69
|
+
[Skills, Memory & Learning](Skills-Memory-Learning.md) ·
|
|
70
|
+
[Extrospection](Extrospection.md) · [Swarm](Swarm.md) · [Cron](Cron.md)
|
|
42
71
|
|
|
43
|
-
[
|
|
72
|
+
[← Home](Home.md)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/lib/pwn/version.rb
CHANGED
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -118,6 +118,27 @@
|
|
|
118
118
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::SAST.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::SAST.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::SAST.analyze(\n\nrequest: 'required - A string containing the source code snippet to be analyzed for SAST antipatterns and vulnerabilities.'\n\n)\n"}]}
|
|
119
119
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::SAST.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::SAST.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
120
120
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::SAST.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::SAST.help`: "}]}
|
|
121
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.ask Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.ask`: Supported Method Parameters\n\nreply = PWN::AI::Agent::Swarm.ask(\n\nname: 'required - persona name from ~/.pwn/agents.yml',\nrequest: 'required - what to ask/instruct the persona',\nswarm_id: 'optional - join an existing swarm (created if omitted)',\nto: 'optional - addressee recorded on the bus (default :all)',\non_tool: 'optional - ->(name, args, result) live-UI callback'\n\n)\n"}]}
|
|
122
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
123
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.broadcast Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.broadcast`: Supported Method Parameters\n\nresult = PWN::AI::Agent::Swarm.broadcast(\n\nrequest: 'required', names: 'optional - default all personas',\nswarm_id: 'optional'\n\n)\n"}]}
|
|
124
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.build_persona_prompt Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.build_persona_prompt`: "}]}
|
|
125
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.bus_append Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.bus_append`: Supported Method Parameters\n\nPWN::AI::Agent::Swarm.bus_append(\n\nswarm_id: 'required', from: 'required', content: 'required',\nto: 'optional (default :all)'\n\n)\n"}]}
|
|
126
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.bus_path Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.bus_path`: "}]}
|
|
127
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.bus_tail Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.bus_tail`: Supported Method Parameters\n\nmsgs = PWN::AI::Agent::Swarm.bus_tail(swarm_id: ‘required’, limit: 12)\n"}]}
|
|
128
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.caller_label Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.caller_label`: "}]}
|
|
129
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.create Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.create`: Supported Method Parameters\n\nswarm = PWN::AI::Agent::Swarm.create(topic: ‘optional’)\n"}]}
|
|
130
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.debate Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.debate`: Supported Method Parameters\n\nresult = PWN::AI::Agent::Swarm.debate(\n\nnames: 'required - Array of persona names, order = speaking order',\ntopic: 'required - opening question / claim',\nrounds: 'optional - full passes over names (default 2)',\nswarm_id: 'optional - join an existing swarm',\non_tool: 'optional - ->(name, args, result) live-UI callback'\n\n)\n"}]}
|
|
131
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.deep_stringify Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.deep_stringify`: "}]}
|
|
132
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.env_ai Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.env_ai`: "}]}
|
|
133
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.help`: "}]}
|
|
134
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.list Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.list`: Supported Method Parameters\n\nswarms = PWN::AI::Agent::Swarm.list\n"}]}
|
|
135
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.max_depth Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.max_depth`: "}]}
|
|
136
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.normalize_persona Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.normalize_persona`: "}]}
|
|
137
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.persona_session Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.persona_session`: "}]}
|
|
138
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.personas Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.personas`: Supported Method Parameters\n\npersonas = PWN::AI::Agent::Swarm.personas\n"}]}
|
|
139
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.retire Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.retire`: Supported Method Parameters\n\nPWN::AI::Agent::Swarm.retire(name: ‘required - persona name’)\n"}]}
|
|
140
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.spawn Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.spawn`: Supported Method Parameters\n\nPWN::AI::Agent::Swarm.spawn(\n\nname: 'required - persona name (snake_case)',\nrole: 'required - system_role_content overlay for this persona',\ntoolsets: 'optional - Array of Registry toolset names',\nengine: 'optional - :openai / :anthropic / :grok / :gemini / :ollama',\nmax_iters: 'optional - per-turn iteration cap for this persona'\n\n)\n"}]}
|
|
141
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::Swarm.with_persona_env Usage"},{"role":"assistant","content":"`PWN::AI::Agent::Swarm.with_persona_env`: "}]}
|
|
121
142
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::TransparentBrowser.analyze(\n\nrequest: 'required - current step in the JavaScript debugging session to analyze',\nsource_to_review: 'required - the block of JavaScript code in which the current step resides'\n\n)\n"}]}
|
|
122
143
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
123
144
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.help`: "}]}
|
|
@@ -129,7 +150,7 @@
|
|
|
129
150
|
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.anthropic_rest_call Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.anthropic_rest_call`: Supported Method Parameters\n\nanthropic_rest_call(\n\ntoken: 'required - anthropic api key',\nhttp_method: 'optional HTTP method (defaults to GET)',\nbase_uri: 'optional base anthropic api URI (defaults to https://api.anthropic.com/v1)',\nrest_call: 'required rest call to make per the schema',\nparams: 'optional params passed in the URI or HTTP Headers',\nhttp_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST',\ntimeout: 'optional timeout in seconds (defaults to 900)',\nspinner: 'optional - display spinner (defaults to false)'\n\n)\n"}]}
|
|
130
151
|
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.authors Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
131
152
|
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.chat Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.chat`: Supported Method Parameters\n\nresponse = PWN::AI::Anthropic.chat(\n\nrequest: 'required - message to Anthropic',\nmodel: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:anthropic][:model])',\ntemp: 'optional - creative response float (defaults to PWN::Env[:ai][:anthropic][:temp])',\nsystem_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:anthropic][:system_role_content])',\nresponse_history: 'optional - pass response back in to have a conversation',\nspeak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',\ntimeout: 'optional timeout in seconds (defaults to 900)',\nspinner: 'optional - display spinner (defaults to false)'\n\n)\n"}]}
|
|
132
|
-
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.chat_with_tools Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.chat_with_tools`: Supported Method Parameters\n\nresponse = PWN::AI::Anthropic.chat_with_tools(\n\nmessages: 'required - OpenAI-format messages array (system/user/assistant/tool)',\ntools: 'optional - OpenAI tools array [{type:\"function\", function:{...}}]',\ntool_choice: 'optional - \"auto\" | \"none\" | \"required\" | {type:\"function\", function:{name:..}}',\nmodel: 'optional - overrides PWN::Env[:ai][:anthropic][:model]',\ntemp: 'optional - temperature (defaults to PWN::Env[:ai][:anthropic][:temp] || 1)',\nmax_tokens: 'optional - defaults to
|
|
153
|
+
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.chat_with_tools Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.chat_with_tools`: Supported Method Parameters\n\nresponse = PWN::AI::Anthropic.chat_with_tools(\n\nmessages: 'required - OpenAI-format messages array (system/user/assistant/tool)',\ntools: 'optional - OpenAI tools array [{type:\"function\", function:{...}}]',\ntool_choice: 'optional - \"auto\" | \"none\" | \"required\" | {type:\"function\", function:{name:..}}',\nmodel: 'optional - overrides PWN::Env[:ai][:anthropic][:model]',\ntemp: 'optional - temperature (defaults to PWN::Env[:ai][:anthropic][:temp] || 1)',\nmax_tokens: 'optional - defaults to PWN::Env[:ai][:anthropic][:max_tokens] || 128_000',\ntimeout: 'optional - seconds (default 900)',\nspinner: 'optional - display spinner (default false)'\n\n)\n"}]}
|
|
133
154
|
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.get_models Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.get_models`: Supported Method Parameters\n\nmodels = PWN::AI::Anthropic.get_models\n"}]}
|
|
134
155
|
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.help Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.help`: "}]}
|
|
135
156
|
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.oa_messages_to_anthropic Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.oa_messages_to_anthropic`: "}]}
|
|
@@ -153,9 +174,6 @@
|
|
|
153
174
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.obtain_oauth_bearer_token Usage"},{"role":"assistant","content":"`PWN::AI::Grok.obtain_oauth_bearer_token`: Supported Method Parameters\n\nbearer = PWN::AI::Grok.obtain_oauth_bearer_token(\n\nclient_id: 'optional - xAI OAuth Client ID (defaults to public Grok-CLI client)',\nscope: 'optional - space-delimited scopes (defaults to XAI_OAUTH_SCOPE)',\ntimeout: 'optional - seconds to wait for user consent (default 300)'\n\n)\n\nRuns the RFC 8628 OAuth 2.0 Device Authorization Grant against auth.x.ai using xAI’s public Grok-CLI client (no client_secret). This is the same identity path ‘hermes auth add xai-oauth` uses – a SuperGrok / X Premium+ subscription on the account is what grants api:access at consent time.\n\n1. POST /oauth2/device/code -> device_code, user_code, verification_uri\n2. User opens verification_uri_complete in a browser and approves.\n3. Poll POST /oauth2/token (grant_type=device_code) until access_token.\n\nOn success the access_token + refresh_token are written back into the passed opts/oauth Hash (so PWN::Env[:grok] is live-cached) and the operator is told exactly what to persist via pwn-vault.\n"}]}
|
|
154
175
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.real_config_value? Usage"},{"role":"assistant","content":"`PWN::AI::Grok.real_config_value?`: "}]}
|
|
155
176
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.refresh_oauth_bearer_token Usage"},{"role":"assistant","content":"`PWN::AI::Grok.refresh_oauth_bearer_token`: Supported Method Parameters\n\naccess_token = PWN::AI::Grok.refresh_oauth_bearer_token(\n\nrefresh_token: 'required - xAI OAuth refresh_token',\nclient_id: 'optional - defaults to public Grok-CLI client',\ntoken_uri: 'optional - defaults to https://auth.x.ai/oauth2/token'\n\n)\n\nExchanges a refresh_token for a fresh access_token at auth.x.ai. On success, writes :bearer_token (and a rotated :refresh_token if returned) back into the passed opts/oauth Hash so the live PWN::Env stays warm for the rest of the process.\n"}]}
|
|
156
|
-
{"messages":[{"role":"user","content":"PWN::AI::Introspection.authors Usage"},{"role":"assistant","content":"`PWN::AI::Introspection.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
157
|
-
{"messages":[{"role":"user","content":"PWN::AI::Introspection.help Usage"},{"role":"assistant","content":"`PWN::AI::Introspection.help`: "}]}
|
|
158
|
-
{"messages":[{"role":"user","content":"PWN::AI::Introspection.reflect_on Usage"},{"role":"assistant","content":"`PWN::AI::Introspection.reflect_on`: Supported Method Parameters\n\nresponse = PWN::AI::Introspection.reflect_on(\n\nrequest: 'required - String - What you want the AI to reflect on',\nsystem_role_content: 'optional - context to set up the model behavior for reflection',\nspinner: 'optional - Boolean - Display spinner during operation (default: false)',\nsuppress_pii_warning: 'optional - Boolean - Suppress PII Warnings (default: false)'\n\n)\n"}]}
|
|
159
177
|
{"messages":[{"role":"user","content":"PWN::AI::Ollama.authors Usage"},{"role":"assistant","content":"`PWN::AI::Ollama.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
160
178
|
{"messages":[{"role":"user","content":"PWN::AI::Ollama.chat Usage"},{"role":"assistant","content":"`PWN::AI::Ollama.chat`: Supported Method Parameters\n\nresponse = PWN::AI::Ollama.chat(\n\nrequest: 'required - message to Ollama'\nmodel: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:ollama][:model])',\ntemp: 'optional - creative response float (deafults to PWN::Env[:ai][:ollama][:temp])',\nsystem_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:ollama][:system_role_content])',\nresponse_history: 'optional - pass response back in to have a conversation',\nspeak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',\ntimeout: 'optional timeout in seconds (defaults to 900)',\nspinner: 'optional - display spinner (defaults to false)'\n\n)\n"}]}
|
|
161
179
|
{"messages":[{"role":"user","content":"PWN::AI::Ollama.chat_with_tools Usage"},{"role":"assistant","content":"`PWN::AI::Ollama.chat_with_tools`: Supported Method Parameters\n\nresponse = PWN::AI::Ollama.chat_with_tools(\n\nmessages: 'required - full OpenAI-format messages array (system/user/assistant/tool)',\ntools: 'optional - OpenAI tools array [{type:\"function\", function:{...}}]',\ntool_choice: 'optional - \"auto\" | \"none\" | {type:\"function\", function:{name:..}}',\nmodel: 'optional - overrides PWN::Env[:ai][:ollama][:model]',\ntemp: 'optional - temperature (defaults to PWN::Env[:ai][:ollama][:temp] || 1)',\ntimeout: 'optional - seconds (default 900)',\nspinner: 'optional - display spinner (default false)'\n\n)\n\nReturns the raw /v1/chat/completions response Hash with :choices intact (including :message) — used by PWN::AI::Agent::Loop. Ollama’s OpenAI-compat endpoint supports tools since 0.3.x; tool_calls come back with function.arguments as a JSON object (not string), which PWN::AI::Agent::Dispatch.parse_args handles transparently.\n"}]}
|
|
@@ -1112,7 +1130,6 @@
|
|
|
1112
1130
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.refresh_ps1_proc Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.refresh_ps1_proc`: "}]}
|
|
1113
1131
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.start Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.start`: Supported Method Parameters\n\nPWN::Plugins::REPL.start\n"}]}
|
|
1114
1132
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.process Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.process`: "}]}
|
|
1115
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.top_h1_program_scope Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.top_h1_program_scope`: "}]}
|
|
1116
1133
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.new Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.new`: "}]}
|
|
1117
1134
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.ensure_tmux_extended_keys Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.ensure_tmux_extended_keys`: "}]}
|
|
1118
1135
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.install_shift_enter_bindings Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.install_shift_enter_bindings`: "}]}
|