pwn 0.5.617 → 0.5.620
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/Gemfile +2 -2
- data/README.md +101 -83
- data/bin/pwn_gqrx_scanner +25 -5
- 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/Diagrams.md +6 -2
- data/documentation/Drivers.md +43 -16
- data/documentation/Extrospection.md +73 -0
- data/documentation/FFI.md +14 -0
- data/documentation/Fuzzing.md +36 -0
- data/documentation/Hardware.md +40 -0
- data/documentation/Home.md +5 -4
- data/documentation/How-PWN-Works.md +7 -4
- data/documentation/Metasploit.md +34 -0
- data/documentation/Mistakes.md +96 -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 +40 -0
- data/documentation/Plugins.md +97 -47
- data/documentation/Reporting.md +25 -18
- data/documentation/SAST.md +39 -22
- data/documentation/SDR.md +58 -0
- data/documentation/Sessions.md +39 -0
- data/documentation/Skills-Memory-Learning.md +59 -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 +286 -0
- data/documentation/diagrams/aws-cloud-security.svg +166 -0
- data/documentation/diagrams/cron-scheduling.svg +148 -0
- data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
- data/documentation/diagrams/dot/extrospection-world-awareness.dot +9 -7
- data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
- data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
- data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
- data/documentation/diagrams/dot/persistence-filesystem.dot +30 -0
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +19 -7
- data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
- data/documentation/diagrams/extrospection-world-awareness.svg +203 -0
- data/documentation/diagrams/hardware-hacking.svg +163 -0
- data/documentation/diagrams/memory-skills-detailed.svg +146 -97
- data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
- data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
- data/documentation/diagrams/persistence-filesystem.svg +189 -0
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +217 -149
- data/documentation/diagrams/sdr-radio-flow.svg +166 -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 +72 -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/ai/agent/extrospection.rb +65 -6
- data/lib/pwn/ai/agent/learning.rb +67 -7
- data/lib/pwn/ai/agent/loop.rb +72 -6
- data/lib/pwn/ai/agent/mistakes.rb +369 -0
- data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
- data/lib/pwn/ai/agent/tools/extrospection.rb +2 -2
- data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
- data/lib/pwn/ai/agent.rb +1 -0
- data/lib/pwn/plugins/jira_data_center.rb +2 -2
- data/lib/pwn/sdr/decoder/adsb.rb +101 -0
- data/lib/pwn/sdr/decoder/apt.rb +75 -0
- data/lib/pwn/sdr/decoder/bluetooth.rb +78 -0
- data/lib/pwn/sdr/decoder/dect.rb +84 -0
- data/lib/pwn/sdr/decoder/gps.rb +83 -0
- data/lib/pwn/sdr/decoder/gsm.rb +50 -29
- data/lib/pwn/sdr/decoder/iridium.rb +81 -0
- data/lib/pwn/sdr/decoder/lora.rb +87 -0
- data/lib/pwn/sdr/decoder/lte.rb +88 -0
- data/lib/pwn/sdr/decoder/morse.rb +64 -0
- data/lib/pwn/sdr/decoder/p25.rb +71 -0
- data/lib/pwn/sdr/decoder/pager.rb +77 -0
- data/lib/pwn/sdr/decoder/pocsag.rb +26 -11
- data/lib/pwn/sdr/decoder/rfid.rb +88 -0
- data/lib/pwn/sdr/decoder/rtl433.rb +95 -0
- data/lib/pwn/sdr/decoder/rtty.rb +66 -0
- data/lib/pwn/sdr/decoder/wifi.rb +98 -0
- data/lib/pwn/sdr/decoder/zigbee.rb +96 -0
- data/lib/pwn/sdr/decoder.rb +67 -7
- data/lib/pwn/sdr/frequency_allocation.rb +82 -41
- data/lib/pwn/sdr/gqrx.rb +186 -95
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
- data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
- data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
- data/third_party/pwn_rdoc.jsonl +114 -8
- metadata +81 -5
|
@@ -0,0 +1,166 @@
|
|
|
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_SDR Pages: 1 -->
|
|
7
|
+
<svg width="917pt" height="599pt"
|
|
8
|
+
viewBox="0.00 0.00 917.00 599.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 556.2)">
|
|
10
|
+
<title>PWN_SDR</title>
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-556.2 873.45,-556.2 873.45,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="169.88" y="-491" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::SDR — Software-Defined Radio & RF Hacking</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="197.62" y="-479.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">GQRX · FlipperZero · RFIDler · SonMicro · FrequencyAllocation · Decoder::* (20 protocols)</text>
|
|
14
|
+
<g id="clust1" class="cluster">
|
|
15
|
+
<title>cluster_hw</title>
|
|
16
|
+
<path fill="#022c22" stroke="#047857" d="M228.5,-239C228.5,-239 346,-239 346,-239 352,-239 358,-245 358,-251 358,-251 358,-446 358,-446 358,-452 352,-458 346,-458 346,-458 228.5,-458 228.5,-458 222.5,-458 216.5,-452 216.5,-446 216.5,-446 216.5,-251 216.5,-251 216.5,-245 222.5,-239 228.5,-239"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="287.25" y="-435" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Hardware</text>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="clust2" class="cluster">
|
|
20
|
+
<title>cluster_ctrl</title>
|
|
21
|
+
<path fill="#422006" stroke="#a16207" d="M440,-219C440,-219 564.25,-219 564.25,-219 570.25,-219 576.25,-225 576.25,-231 576.25,-231 576.25,-454 576.25,-454 576.25,-460 570.25,-466 564.25,-466 564.25,-466 440,-466 440,-466 434,-466 428,-460 428,-454 428,-454 428,-231 428,-231 428,-225 434,-219 440,-219"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-443" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Control · Scan</text>
|
|
23
|
+
</g>
|
|
24
|
+
<g id="clust3" class="cluster">
|
|
25
|
+
<title>cluster_dec</title>
|
|
26
|
+
<path fill="#2e1065" stroke="#6d28d9" d="M20,-8C20,-8 810.25,-8 810.25,-8 816.25,-8 822.25,-14 822.25,-20 822.25,-20 822.25,-199 822.25,-199 822.25,-205 816.25,-211 810.25,-211 810.25,-211 20,-211 20,-211 14,-211 8,-205 8,-199 8,-199 8,-20 8,-20 8,-14 14,-8 20,-8"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="415.12" y="-188" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Decode · Record</text>
|
|
28
|
+
</g>
|
|
29
|
+
<!-- RF -->
|
|
30
|
+
<g id="node1" class="node">
|
|
31
|
+
<title>RF</title>
|
|
32
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M111.88,-351C111.88,-351 42.62,-351 42.62,-351 36.62,-351 30.62,-345 30.62,-339 30.62,-339 30.62,-327 30.62,-327 30.62,-321 36.62,-315 42.62,-315 42.62,-315 111.88,-315 111.88,-315 117.88,-315 123.88,-321 123.88,-327 123.88,-327 123.88,-339 123.88,-339 123.88,-345 117.88,-351 111.88,-351"/>
|
|
33
|
+
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-329.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">📡  RF Spectrum</text>
|
|
34
|
+
</g>
|
|
35
|
+
<!-- SDRhw -->
|
|
36
|
+
<g id="node2" class="node">
|
|
37
|
+
<title>SDRhw</title>
|
|
38
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M338,-283C338,-283 236.5,-283 236.5,-283 230.5,-283 224.5,-277 224.5,-271 224.5,-271 224.5,-259 224.5,-259 224.5,-253 230.5,-247 236.5,-247 236.5,-247 338,-247 338,-247 344,-247 350,-253 350,-259 350,-259 350,-271 350,-271 350,-277 344,-283 338,-283"/>
|
|
39
|
+
<text xml:space="preserve" text-anchor="middle" x="287.25" y="-267.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RTL-SDR / HackRF</text>
|
|
40
|
+
<text xml:space="preserve" text-anchor="middle" x="287.25" y="-255.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(via GQRX / SoapySDR)</text>
|
|
41
|
+
</g>
|
|
42
|
+
<!-- RF->SDRhw -->
|
|
43
|
+
<g id="edge1" class="edge">
|
|
44
|
+
<title>RF->SDRhw</title>
|
|
45
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M124.41,-317.91C152.63,-308.69 189.17,-296.74 220.38,-286.53"/>
|
|
46
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="220.86,-289.32 227.59,-284.18 219.12,-284 220.86,-289.32"/>
|
|
47
|
+
</g>
|
|
48
|
+
<!-- Flipper -->
|
|
49
|
+
<g id="node3" class="node">
|
|
50
|
+
<title>Flipper</title>
|
|
51
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M321.5,-351C321.5,-351 253,-351 253,-351 247,-351 241,-345 241,-339 241,-339 241,-327 241,-327 241,-321 247,-315 253,-315 253,-315 321.5,-315 321.5,-315 327.5,-315 333.5,-321 333.5,-327 333.5,-327 333.5,-339 333.5,-339 333.5,-345 327.5,-351 321.5,-351"/>
|
|
52
|
+
<text xml:space="preserve" text-anchor="middle" x="287.25" y="-329.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::FlipperZero</text>
|
|
53
|
+
</g>
|
|
54
|
+
<!-- RF->Flipper -->
|
|
55
|
+
<g id="edge2" class="edge">
|
|
56
|
+
<title>RF->Flipper</title>
|
|
57
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M124.41,-333C155.89,-333 197.74,-333 231,-333"/>
|
|
58
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="230.61,-335.8 238.61,-333 230.61,-330.2 230.61,-335.8"/>
|
|
59
|
+
</g>
|
|
60
|
+
<!-- RFID -->
|
|
61
|
+
<g id="node4" class="node">
|
|
62
|
+
<title>RFID</title>
|
|
63
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M315.88,-419C315.88,-419 258.62,-419 258.62,-419 252.62,-419 246.62,-413 246.62,-407 246.62,-407 246.62,-395 246.62,-395 246.62,-389 252.62,-383 258.62,-383 258.62,-383 315.88,-383 315.88,-383 321.88,-383 327.88,-389 327.88,-395 327.88,-395 327.88,-407 327.88,-407 327.88,-413 321.88,-419 315.88,-419"/>
|
|
64
|
+
<text xml:space="preserve" text-anchor="middle" x="287.25" y="-403.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::RFIDler</text>
|
|
65
|
+
<text xml:space="preserve" text-anchor="middle" x="287.25" y="-391.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SonMicroRFID</text>
|
|
66
|
+
</g>
|
|
67
|
+
<!-- RF->RFID -->
|
|
68
|
+
<g id="edge3" class="edge">
|
|
69
|
+
<title>RF->RFID</title>
|
|
70
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M124.27,-348.51C151.14,-357.52 185.7,-369.02 216.5,-379 223.06,-381.13 229.98,-383.34 236.8,-385.51"/>
|
|
71
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="235.66,-388.09 244.14,-387.83 237.36,-382.75 235.66,-388.09"/>
|
|
72
|
+
</g>
|
|
73
|
+
<!-- GQRX -->
|
|
74
|
+
<g id="node5" class="node">
|
|
75
|
+
<title>GQRX</title>
|
|
76
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M548.75,-283C548.75,-283 455.5,-283 455.5,-283 449.5,-283 443.5,-277 443.5,-271 443.5,-271 443.5,-239 443.5,-239 443.5,-233 449.5,-227 455.5,-227 455.5,-227 548.75,-227 548.75,-227 554.75,-227 560.75,-233 560.75,-239 560.75,-239 560.75,-271 560.75,-271 560.75,-277 554.75,-283 548.75,-283"/>
|
|
77
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-269.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX</text>
|
|
78
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-257.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">remote control</text>
|
|
79
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-245.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">spectrum snapshot</text>
|
|
80
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-233.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(median floor · DC null)</text>
|
|
81
|
+
</g>
|
|
82
|
+
<!-- SDRhw->GQRX -->
|
|
83
|
+
<g id="edge4" class="edge">
|
|
84
|
+
<title>SDRhw->GQRX</title>
|
|
85
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M350.39,-262.08C376.41,-260.86 406.72,-259.43 433.31,-258.19"/>
|
|
86
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="433.09,-261 440.95,-257.83 432.83,-255.41 433.09,-261"/>
|
|
87
|
+
</g>
|
|
88
|
+
<!-- Xrf -->
|
|
89
|
+
<g id="node10" class="node">
|
|
90
|
+
<title>Xrf</title>
|
|
91
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M126.5,-112C126.5,-112 28,-112 28,-112 22,-112 16,-106 16,-100 16,-100 16,-88 16,-88 16,-82 22,-76 28,-76 28,-76 126.5,-76 126.5,-76 132.5,-76 138.5,-82 138.5,-88 138.5,-88 138.5,-100 138.5,-100 138.5,-106 132.5,-112 126.5,-112"/>
|
|
92
|
+
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_snapshot :rf</text>
|
|
93
|
+
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-84.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">probe_rf → hw inventory</text>
|
|
94
|
+
</g>
|
|
95
|
+
<!-- SDRhw->Xrf -->
|
|
96
|
+
<g id="edge10" class="edge">
|
|
97
|
+
<title>SDRhw->Xrf</title>
|
|
98
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M223.87,-247.2C221.33,-245.89 218.86,-244.49 216.5,-243 164.82,-210.3 119.75,-153.58 96.03,-120.36"/>
|
|
99
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="98.49,-118.99 91.6,-114.05 93.91,-122.21 98.49,-118.99"/>
|
|
100
|
+
</g>
|
|
101
|
+
<!-- Freq -->
|
|
102
|
+
<g id="node6" class="node">
|
|
103
|
+
<title>Freq</title>
|
|
104
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M556.25,-351C556.25,-351 448,-351 448,-351 442,-351 436,-345 436,-339 436,-339 436,-327 436,-327 436,-321 442,-315 448,-315 448,-315 556.25,-315 556.25,-315 562.25,-315 568.25,-321 568.25,-327 568.25,-327 568.25,-339 568.25,-339 568.25,-345 562.25,-351 556.25,-351"/>
|
|
105
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-335.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::FrequencyAllocation</text>
|
|
106
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-323.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">band lookup</text>
|
|
107
|
+
</g>
|
|
108
|
+
<!-- Flipper->Freq -->
|
|
109
|
+
<g id="edge5" class="edge">
|
|
110
|
+
<title>Flipper->Freq</title>
|
|
111
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M333.92,-333C360.7,-333 395.22,-333 425.92,-333"/>
|
|
112
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="425.77,-335.8 433.77,-333 425.77,-330.2 425.77,-335.8"/>
|
|
113
|
+
</g>
|
|
114
|
+
<!-- Scan -->
|
|
115
|
+
<g id="node7" class="node">
|
|
116
|
+
<title>Scan</title>
|
|
117
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M546.88,-427C546.88,-427 457.38,-427 457.38,-427 451.38,-427 445.38,-421 445.38,-415 445.38,-415 445.38,-395 445.38,-395 445.38,-389 451.38,-383 457.38,-383 457.38,-383 546.88,-383 546.88,-383 552.88,-383 558.88,-389 558.88,-395 558.88,-395 558.88,-415 558.88,-415 558.88,-421 552.88,-427 546.88,-427"/>
|
|
118
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-413.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_gqrx_scanner</text>
|
|
119
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-401.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">--fft-scan · iterative</text>
|
|
120
|
+
<text xml:space="preserve" text-anchor="middle" x="502.12" y="-389.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">--min-snr-db · --avg</text>
|
|
121
|
+
</g>
|
|
122
|
+
<!-- RFID->Scan -->
|
|
123
|
+
<g id="edge6" class="edge">
|
|
124
|
+
<title>RFID->Scan</title>
|
|
125
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M328.29,-401.75C358.34,-402.32 400.16,-403.1 435.13,-403.76"/>
|
|
126
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="434.78,-406.55 442.83,-403.9 434.88,-400.95 434.78,-406.55"/>
|
|
127
|
+
</g>
|
|
128
|
+
<!-- Dec -->
|
|
129
|
+
<g id="node8" class="node">
|
|
130
|
+
<title>Dec</title>
|
|
131
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M802.25,-96C802.25,-96 666.25,-96 666.25,-96 660.25,-96 654.25,-90 654.25,-84 654.25,-84 654.25,-28 654.25,-28 654.25,-22 660.25,-16 666.25,-16 666.25,-16 802.25,-16 802.25,-16 808.25,-16 814.25,-22 814.25,-28 814.25,-28 814.25,-84 814.25,-84 814.25,-90 808.25,-96 802.25,-96"/>
|
|
132
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-82.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::Decoder::*</text>
|
|
133
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-70.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">ADSB · APT · BT · DECT · GPS</text>
|
|
134
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-58.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">GSM · Iridium · LoRa · LTE</text>
|
|
135
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-46.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Morse · P25 · POCSAG/FLEX</text>
|
|
136
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-34.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RDS · RFID · rtl_433 · RTTY</text>
|
|
137
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-22.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">WiFi · ZigBee</text>
|
|
138
|
+
</g>
|
|
139
|
+
<!-- GQRX->Dec -->
|
|
140
|
+
<g id="edge7" class="edge">
|
|
141
|
+
<title>GQRX->Dec</title>
|
|
142
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M561.17,-233.24C566.51,-230.18 571.64,-226.77 576.25,-223 622.93,-184.83 611.7,-154.72 654.25,-112 657.34,-108.9 660.61,-105.85 664,-102.88"/>
|
|
143
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="665.77,-105.05 670.09,-97.76 662.16,-100.77 665.77,-105.05"/>
|
|
144
|
+
</g>
|
|
145
|
+
<!-- Freq->Dec -->
|
|
146
|
+
<g id="edge8" class="edge">
|
|
147
|
+
<title>Freq->Dec</title>
|
|
148
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M568.68,-316.86C571.37,-315.1 573.91,-313.16 576.25,-311 646.1,-246.61 595.72,-186.82 654.25,-112 656.7,-108.87 659.37,-105.84 662.19,-102.92"/>
|
|
149
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="663.82,-105.25 667.64,-97.68 659.93,-101.22 663.82,-105.25"/>
|
|
150
|
+
</g>
|
|
151
|
+
<!-- Obs -->
|
|
152
|
+
<g id="node9" class="node">
|
|
153
|
+
<title>Obs</title>
|
|
154
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M768.5,-172C768.5,-172 700,-172 700,-172 694,-172 688,-166 688,-160 688,-160 688,-140 688,-140 688,-134 694,-128 700,-128 700,-128 768.5,-128 768.5,-128 774.5,-128 780.5,-134 780.5,-140 780.5,-140 780.5,-160 780.5,-160 780.5,-166 774.5,-172 768.5,-172"/>
|
|
155
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-158.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_observe</text>
|
|
156
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-146.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">category: :rf</text>
|
|
157
|
+
<text xml:space="preserve" text-anchor="middle" x="734.25" y="-134.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">record signal intel</text>
|
|
158
|
+
</g>
|
|
159
|
+
<!-- Scan->Obs -->
|
|
160
|
+
<g id="edge9" class="edge">
|
|
161
|
+
<title>Scan->Obs</title>
|
|
162
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M559.35,-389.21C565.35,-386.32 571.12,-382.94 576.25,-379 646.6,-324.88 696.97,-230.14 719.71,-181.21"/>
|
|
163
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="722.17,-182.58 722.94,-174.14 717.07,-180.25 722.17,-182.58"/>
|
|
164
|
+
</g>
|
|
165
|
+
</g>
|
|
166
|
+
</svg>
|
|
@@ -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,85 @@
|
|
|
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_*`, `mistakes_*`, `extro_*`, `agent_*`, …), executes them
|
|
6
|
+
against the live process, observes the results, and loops until it can give you
|
|
7
|
+
a final answer — **learning from every failure so it doesn't repeat it**.
|
|
4
8
|
|
|
5
|
-
##
|
|
9
|
+
## Two ways to run it
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
# 1. Interactive TUI (inside the pwn REPL)
|
|
13
|
+
pwn[v0.5.618]:001 >>> pwn-ai
|
|
14
|
+
✨ pwn-ai · anthropic · session 20260707_225041_d7f2f3bb
|
|
15
|
+
> Use NmapIt to sweep 10.0.0.0/24, then TransparentBrowser via Burp on any
|
|
16
|
+
host with 443 open, active-scan, and give me a Reports::SAST summary.
|
|
17
|
+
```
|
|
6
18
|
|
|
7
19
|
```bash
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
>
|
|
20
|
+
# 2. Headless one-shot (CI-friendly)
|
|
21
|
+
$ pwn --ai "run bin/pwn_sast against ./src and push findings to DefectDojo"
|
|
11
22
|
```
|
|
12
23
|
|
|
13
|
-
##
|
|
24
|
+
## Anatomy of a turn
|
|
14
25
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
1. **PromptBuilder** assembles the system prompt: your request + MEMORY block +
|
|
27
|
+
SKILLS list + LEARNING stats + **KNOWN MISTAKES / KNOWN FIXES** +
|
|
28
|
+
TOOL EFFECTIVENESS + EXTROSPECTION block.
|
|
29
|
+
2. **Loop** checks the incoming message against `Mistakes::CORRECTION_RX` — if
|
|
30
|
+
it reads like *"no, that's wrong"* the previous outcome is flipped to
|
|
31
|
+
`success:false` and fingerprinted.
|
|
32
|
+
3. Loop sends the prompt to the active `PWN::AI::<Engine>` client.
|
|
33
|
+
4. Provider replies with `tool_calls` → **Dispatch** executes each one via the
|
|
34
|
+
[Registry](Agent-Tool-Registry.md); **Metrics** records duration/success.
|
|
35
|
+
Any *failure* is fingerprinted into **Mistakes** (`count++`, cross-session)
|
|
36
|
+
and the tool result gets an inline `correction_hint` (`seen N×, sig=…,
|
|
37
|
+
KNOWN FIX: …`) so the very next iteration self-corrects. If the persistent
|
|
38
|
+
count ≥ 3, `guard_repeated_failure` interrupts with an explicit
|
|
39
|
+
*change-approach* instruction.
|
|
40
|
+
5. Results are appended to the message list; go to 3.
|
|
41
|
+
6. When the reply has *no* tool_calls it's the **final answer** →
|
|
42
|
+
`Learning.auto_reflect` and `Extrospection.auto_extrospect` fire (if
|
|
43
|
+
enabled), transcript is flushed to `~/.pwn/sessions/`.
|
|
25
44
|
|
|
26
|
-
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
## What the agent can call
|
|
48
|
+
|
|
49
|
+
10 toolsets · 52 tools — full table at
|
|
50
|
+
[Agent Tool Registry](Agent-Tool-Registry.md).
|
|
27
51
|
|
|
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
|
-
```
|
|
52
|
+
The two that matter most:
|
|
36
53
|
|
|
37
|
-
|
|
54
|
+
| Tool | Reach |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `pwn_eval` | **Any** Ruby in-process — the whole `PWN::` namespace, `require`, monkey-patch, everything |
|
|
57
|
+
| `shell` | **Any** OS command on the host |
|
|
58
|
+
|
|
59
|
+
Everything else (memory, skills, learning, **mistakes**, extrospection, cron,
|
|
60
|
+
swarm, sessions, metrics) is a convenience wrapper the model can discover from
|
|
61
|
+
the schema alone.
|
|
62
|
+
|
|
63
|
+
## Delegating to other agents
|
|
64
|
+
|
|
65
|
+
`agent_ask`, `agent_debate`, `agent_broadcast` spin up **sub-agents** (each a
|
|
66
|
+
full `Loop.run` under a persona overlay) that share a JSONL bus. See
|
|
67
|
+
[Swarm](Swarm.md).
|
|
68
|
+
|
|
69
|
+
## Tips
|
|
38
70
|
|
|
39
|
-
|
|
71
|
+
- SHIFT+ENTER = newline, ENTER = submit.
|
|
72
|
+
- `back` / `exit` returns to the plain REPL.
|
|
73
|
+
- Set `ai.agent.max_iters` in `~/.pwn/config.yml` if long tasks get truncated.
|
|
74
|
+
- Disable `auto_reflect` during noisy fuzz loops
|
|
75
|
+
(`learning_auto_reflect_toggle(enabled: false)`), re-enable for the summary
|
|
76
|
+
turn.
|
|
77
|
+
- Run `mistakes_list` before retrying something that failed last session — the
|
|
78
|
+
fix may already be recorded.
|
|
40
79
|
|
|
41
|
-
See also [AI Integration](AI-Integration.md)
|
|
80
|
+
**See also:** [AI Integration](AI-Integration.md) ·
|
|
81
|
+
[Skills, Memory & Learning](Skills-Memory-Learning.md) ·
|
|
82
|
+
[Mistakes](Mistakes.md) · [Extrospection](Extrospection.md) ·
|
|
83
|
+
[Swarm](Swarm.md) · [Cron](Cron.md)
|
|
42
84
|
|
|
43
|
-
[
|
|
85
|
+
[← Home](Home.md)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|