pwn 0.5.615 → 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.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +109 -85
  3. data/README.md.bak +200 -0
  4. data/bin/pwn +47 -2
  5. data/bin/pwn_gqrx_scanner +75 -18
  6. data/documentation/AI-Integration.md +42 -26
  7. data/documentation/AWS.md +57 -0
  8. data/documentation/Agent-Tool-Registry.md +56 -0
  9. data/documentation/Banner.md +17 -0
  10. data/documentation/Blockchain.md +18 -0
  11. data/documentation/Bounty.md +21 -0
  12. data/documentation/BurpSuite.md +41 -16
  13. data/documentation/CLI-Drivers.md +58 -0
  14. data/documentation/Configuration.md +66 -0
  15. data/documentation/Contributing.md +33 -19
  16. data/documentation/Cron.md +47 -0
  17. data/documentation/Diagrams.md +123 -40
  18. data/documentation/Drivers.md +43 -16
  19. data/documentation/Extrospection.md +54 -0
  20. data/documentation/FFI.md +14 -0
  21. data/documentation/Fuzzing.md +36 -0
  22. data/documentation/General-PWN-Usage.md +50 -30
  23. data/documentation/Hardware.md +40 -0
  24. data/documentation/Home.md +78 -51
  25. data/documentation/How-PWN-Works.md +59 -57
  26. data/documentation/Installation.md +53 -28
  27. data/documentation/Metasploit.md +34 -0
  28. data/documentation/NmapIt.md +18 -12
  29. data/documentation/PWN.png +0 -0
  30. data/documentation/PWN_Contributors_and_Users.png +0 -0
  31. data/documentation/Persistence.md +38 -0
  32. data/documentation/Plugins.md +97 -47
  33. data/documentation/Reporting.md +25 -18
  34. data/documentation/SAST.md +39 -22
  35. data/documentation/SDR.md +40 -0
  36. data/documentation/Sessions.md +39 -0
  37. data/documentation/Skills-Memory-Learning.md +49 -29
  38. data/documentation/Swarm.md +71 -0
  39. data/documentation/Transparent-Browser.md +26 -22
  40. data/documentation/Troubleshooting.md +44 -25
  41. data/documentation/WWW.md +32 -0
  42. data/documentation/What-is-PWN.md +51 -32
  43. data/documentation/Why-PWN.md +41 -11
  44. data/documentation/diagrams/agent-tool-registry.svg +284 -0
  45. data/documentation/diagrams/ai-integration-tool-calling.svg +141 -103
  46. data/documentation/diagrams/aws-cloud-security.svg +166 -0
  47. data/documentation/diagrams/build.sh +20 -0
  48. data/documentation/diagrams/burp-vs-zap-preference.svg +47 -62
  49. data/documentation/diagrams/code-scanning-sast.svg +139 -79
  50. data/documentation/diagrams/cron-scheduling.svg +148 -0
  51. data/documentation/diagrams/dot/_THEME.md +27 -0
  52. data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
  53. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +47 -20
  54. data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
  55. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +23 -12
  56. data/documentation/diagrams/dot/code-scanning-sast.dot +46 -18
  57. data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
  58. data/documentation/diagrams/dot/driver-framework.dot +36 -14
  59. data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
  60. data/documentation/diagrams/dot/fuzzing-workflow.dot +44 -24
  61. data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
  62. data/documentation/diagrams/dot/history-to-drivers.dot +31 -17
  63. data/documentation/diagrams/dot/memory-skills-detailed.dot +57 -25
  64. data/documentation/diagrams/dot/network-infra-testing.dot +51 -19
  65. data/documentation/diagrams/dot/overall-pwn-architecture.dot +110 -44
  66. data/documentation/diagrams/dot/penetration-testing-workflow.dot +56 -25
  67. data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
  68. data/documentation/diagrams/dot/plugin-ecosystem.dot +41 -27
  69. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +87 -46
  70. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +49 -30
  71. data/documentation/diagrams/dot/reporting-pipeline.dot +43 -14
  72. data/documentation/diagrams/dot/reverse-engineering-flow.dot +40 -18
  73. data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
  74. data/documentation/diagrams/dot/sessions-cron-automation.dot +41 -14
  75. data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
  76. data/documentation/diagrams/dot/web-application-testing.dot +45 -23
  77. data/documentation/diagrams/dot/zero-day-research-flow.dot +46 -24
  78. data/documentation/diagrams/driver-framework.svg +87 -66
  79. data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
  80. data/documentation/diagrams/fuzzing-workflow.svg +128 -115
  81. data/documentation/diagrams/hardware-hacking.svg +163 -0
  82. data/documentation/diagrams/history-to-drivers.svg +84 -82
  83. data/documentation/diagrams/memory-skills-detailed.svg +167 -119
  84. data/documentation/diagrams/network-infra-testing.svg +146 -84
  85. data/documentation/diagrams/overall-pwn-architecture.svg +356 -185
  86. data/documentation/diagrams/penetration-testing-workflow.svg +161 -108
  87. data/documentation/diagrams/persistence-filesystem.svg +174 -0
  88. data/documentation/diagrams/plugin-ecosystem.svg +225 -121
  89. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +257 -185
  90. data/documentation/diagrams/pwn-repl-prototyping.svg +126 -137
  91. data/documentation/diagrams/reporting-pipeline.svg +128 -68
  92. data/documentation/diagrams/reverse-engineering-flow.svg +100 -80
  93. data/documentation/diagrams/sdr-radio-flow.svg +146 -0
  94. data/documentation/diagrams/sessions-cron-automation.svg +112 -68
  95. data/documentation/diagrams/swarm-multi-agent.svg +225 -0
  96. data/documentation/diagrams/web-application-testing.svg +136 -100
  97. data/documentation/diagrams/zero-day-research-flow.svg +116 -112
  98. data/documentation/fax-spectrogram.png +0 -0
  99. data/documentation/fax-waveform.png +0 -0
  100. data/documentation/pwn-REPL.md +40 -24
  101. data/documentation/pwn-ai-Agent.md +59 -30
  102. data/documentation/pwn_android_war_dialer_session.png +0 -0
  103. data/documentation/pwn_install.png +0 -0
  104. data/documentation/pwn_wallpaper.jpg +0 -0
  105. data/documentation/ringing-spectrogram.png +0 -0
  106. data/documentation/ringing-waveform.png +0 -0
  107. data/git_commit.sh +1 -1
  108. data/lib/pwn/ai/agent/assembly.rb +1 -1
  109. data/lib/pwn/ai/agent/btc.rb +1 -1
  110. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  111. data/lib/pwn/ai/agent/extrospection.rb +618 -0
  112. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  113. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  114. data/lib/pwn/ai/agent/introspection.rb +91 -0
  115. data/lib/pwn/ai/agent/learning.rb +6 -4
  116. data/lib/pwn/ai/agent/loop.rb +15 -0
  117. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  118. data/lib/pwn/ai/agent/sast.rb +1 -1
  119. data/lib/pwn/ai/agent/swarm.rb +437 -0
  120. data/lib/pwn/ai/agent/tools/cron.rb +163 -0
  121. data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
  122. data/lib/pwn/ai/agent/tools/learning.rb +108 -0
  123. data/lib/pwn/ai/agent/tools/memory.rb +27 -0
  124. data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
  125. data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
  126. data/lib/pwn/ai/agent/tools/skills.rb +30 -0
  127. data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
  128. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  129. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  130. data/lib/pwn/ai/agent.rb +3 -0
  131. data/lib/pwn/ai/anthropic.rb +19 -4
  132. data/lib/pwn/ai.rb +0 -1
  133. data/lib/pwn/config.rb +10 -23
  134. data/lib/pwn/cron.rb +16 -7
  135. data/lib/pwn/plugins/repl.rb +90 -281
  136. data/lib/pwn/sdr/decoder/base.rb +251 -0
  137. data/lib/pwn/sdr/decoder/gsm.rb +84 -185
  138. data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
  139. data/lib/pwn/sdr/decoder.rb +1 -0
  140. data/lib/pwn/sdr/gqrx.rb +446 -65
  141. data/lib/pwn/version.rb +1 -1
  142. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
  143. data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
  144. data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
  145. data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
  146. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
  147. data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
  148. data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
  149. data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
  150. data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
  151. data/third_party/pwn_rdoc.jsonl +199 -37
  152. metadata +65 -3
  153. data/lib/pwn/ai/introspection.rb +0 -76
@@ -1,27 +1,47 @@
1
- digraph "PWN Fuzzing Workflows" {
2
- rankdir=LR;
3
- node [shape=box, style=rounded, fontname="Arial", fontsize=9];
1
+ digraph "PWN_Fuzz" {
2
+ graph [
3
+ label=<<B>Fuzzing with PWN</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.2,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
4
12
 
5
- Input [label="Input Corpus\n(Seeds, Mutators)", shape=box];
6
- FuzzProto [label="Protocol Fuzz\n(pwn_fuzz_net_app_proto)"];
7
- FuzzFile [label="File / Format Fuzz"];
8
- FuzzNet [label="Network Service Fuzz"];
9
- FuzzWeb [label="Web App Fuzz\n(XSS vectors, etc.)"];
10
- PWNfuzz [label="PWN::Plugins::Fuzz", shape=ellipse];
11
- Monitor [label="Monitor Crashes\n(PS, logging, core dumps)"];
12
- Corpus [label="Interesting Inputs\n(saved for replay)", shape=cylinder];
13
- Crash [label="Crash Analysis\n(identify root cause)", shape=ellipse];
13
+ Seed [label="Seed corpus /\nprotocol grammar", fillcolor="#7dd3fc"];
14
14
 
15
- Input -> PWNfuzz;
16
- PWNfuzz -> FuzzProto;
17
- PWNfuzz -> FuzzFile;
18
- PWNfuzz -> FuzzNet;
19
- PWNfuzz -> FuzzWeb;
20
- FuzzProto -> Monitor;
21
- FuzzFile -> Monitor;
22
- FuzzNet -> Monitor;
23
- FuzzWeb -> Monitor;
24
- Monitor -> Corpus;
25
- Monitor -> Crash;
26
- Crash -> Input [label="refine mutators"];
15
+ subgraph cluster_gen {
16
+ label="Generate"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Fuzz [label="Plugins::Fuzz\nmutate · generate", fillcolor="#6ee7b7"];
19
+ Char [label="Plugins::Char\nencodings", fillcolor="#6ee7b7"];
20
+ }
21
+ subgraph cluster_deliver {
22
+ label="Deliver"; fontcolor="#fde68a"; style=rounded;
23
+ color="#a16207"; bgcolor="#422006";
24
+ Sock [label="Plugins::Sock\nTCP/UDP", fillcolor="#fcd34d"];
25
+ Packet [label="Plugins::Packet\nraw L2/L3", fillcolor="#fcd34d"];
26
+ NetApp [label="pwn_fuzz_net_app_proto\nCLI driver", fillcolor="#fcd34d"];
27
+ }
28
+ subgraph cluster_mon {
29
+ label="Monitor"; fontcolor="#fecaca"; style=rounded;
30
+ color="#b91c1c"; bgcolor="#450a0a";
31
+ PS [label="Plugins::PS\nprocess health", fillcolor="#fda4af"];
32
+ Log [label="Plugins::Log\ncrash detect", fillcolor="#fda4af"];
33
+ }
34
+ Report [label="Reports::Fuzz\ncrash triage", fillcolor="#7dd3fc"];
35
+
36
+ Seed -> Fuzz [color="#38bdf8"];
37
+ Seed -> Char [color="#38bdf8"];
38
+ Fuzz -> Sock [color="#f59e0b"];
39
+ Fuzz -> Packet [color="#f59e0b"];
40
+ Char -> NetApp [color="#f59e0b"];
41
+ Sock -> PS [color="#fb7185"];
42
+ Packet -> Log [color="#fb7185"];
43
+ NetApp -> Log [color="#fb7185"];
44
+ PS -> Report [color="#38bdf8"];
45
+ Log -> Report [color="#38bdf8"];
46
+ Log -> Fuzz [label="minimise + reseed", style=dashed, color="#fbbf24", constraint=false];
27
47
  }
@@ -0,0 +1,48 @@
1
+ digraph "PWN_Hardware" {
2
+ graph [
3
+ label=<<B>Hardware &amp; Physical-Layer Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Serial · BusPirate · MSR206 · Android · BareSIP · SDR</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.4, ranksep=1.2,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
12
+
13
+ subgraph cluster_dev {
14
+ label="Physical Devices"; fontcolor="#fecaca"; style="rounded,dashed";
15
+ color="#b91c1c"; bgcolor="#450a0a";
16
+ Uart [label="UART / JTAG\nembedded target", fillcolor="#fda4af"];
17
+ Mag [label="Magstripe card", fillcolor="#fda4af"];
18
+ Phone [label="Android device", fillcolor="#fda4af"];
19
+ VoIP [label="SIP / PSTN", fillcolor="#fda4af"];
20
+ RF [label="RF spectrum", fillcolor="#fda4af"];
21
+ }
22
+ subgraph cluster_pl {
23
+ label="PWN::Plugins / SDR"; fontcolor="#a7f3d0"; style=rounded;
24
+ color="#047857"; bgcolor="#022c22";
25
+ Serial [label="Serial · BusPirate", fillcolor="#6ee7b7"];
26
+ MSR [label="MSR206", fillcolor="#6ee7b7"];
27
+ Adb [label="Android (adb)", fillcolor="#6ee7b7"];
28
+ Sip [label="BareSIP · Voice", fillcolor="#6ee7b7"];
29
+ Sdr [label="SDR::GQRX · Flipper",fillcolor="#6ee7b7"];
30
+ }
31
+ subgraph cluster_out {
32
+ label="Analysis"; fontcolor="#ddd6fe"; style=rounded;
33
+ color="#6d28d9"; bgcolor="#2e1065";
34
+ XXD [label="XXD · Assembly", fillcolor="#c4b5fd"];
35
+ Rep [label="Reports · Skills", fillcolor="#c4b5fd"];
36
+ }
37
+
38
+ Uart -> Serial [color="#fb7185"];
39
+ Mag -> MSR [color="#fb7185"];
40
+ Phone -> Adb [color="#fb7185"];
41
+ VoIP -> Sip [color="#fb7185"];
42
+ RF -> Sdr [color="#fb7185"];
43
+ Serial -> XXD [color="#a78bfa"];
44
+ MSR -> XXD [color="#a78bfa"];
45
+ Adb -> Rep [color="#a78bfa"];
46
+ Sip -> Rep [color="#a78bfa"];
47
+ Sdr -> Rep [color="#a78bfa"];
48
+ }
@@ -1,20 +1,34 @@
1
- digraph "History Command to Driver Generation" {
2
- rankdir=TB;
3
- node [shape=box, style=rounded, fontname="Arial", fontsize=9];
1
+ digraph "PWN_HistToDriver" {
2
+ graph [
3
+ label=<<B>From REPL History → Reusable Driver / Skill</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">explore → history → bin/pwn_* driver → distill_skill</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.5, ranksep=1.2,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
4
12
 
5
- User [label="User in REPL"];
6
- Pry [label="PWN REPL\n(history, edit, save)"];
7
- HistoryFile [label="~/.pry_history\n(raw commands)", shape=cylinder, fillcolor=lightyellow];
8
- Script [label="Prototype Script\n(.rb or bin/)", shape=box];
9
- Driver [label="PWN Driver\n(/opt/pwn/bin/ example\nor PWN::Driver::Parser)", shape=box];
10
- Skill [label="Distilled Skill\n(~/.pwn/skills/)", shape=cylinder, fillcolor=lightyellow];
11
- Agent [label="pwn-ai Agent\n(future automation)"];
13
+ Explore [label="🐚 Explore in REPL\ncall PWN::Plugins::*", fillcolor="#7dd3fc"];
14
+ Hist [label="~/.pwn_history\nPry `history` cmd", shape=cylinder, fillcolor="#fcd34d"];
15
+ Extract [label="copy working lines", fillcolor="#6ee7b7"];
12
16
 
13
- User -> Pry [label="run exploration cmds"];
14
- Pry -> HistoryFile [label="appends each line"];
15
- Pry -> Script [label="history | grep > my_proto.rb\nor edit -n"];
16
- Script -> Driver [label="wrap in PWN::Driver\nadd opts, orchestration"];
17
- Script -> Skill [label="manually or via\ndistill_skill after success"];
18
- Driver -> Agent [label="invoked by agent\nor cron"];
19
- Skill -> Agent [label="loaded in prompt context"];
17
+ subgraph cluster_out {
18
+ label="Reusable Artefacts"; fontcolor="#ddd6fe"; style=rounded;
19
+ color="#6d28d9"; bgcolor="#2e1065";
20
+ Driver [label="bin/pwn_<name>\nOptionParser + PWN calls", fillcolor="#c4b5fd"];
21
+ Skill [label="~/.pwn/skills/<name>.md\nlearning_distill_skill", fillcolor="#c4b5fd"];
22
+ Cron [label="cron_create\nprompt: | ruby:", fillcolor="#c4b5fd"];
23
+ }
24
+ CI [label="⚙️ CI / CD\nheadless run", fillcolor="#7dd3fc"];
25
+
26
+ Explore -> Hist [label="auto-log", color="#38bdf8"];
27
+ Hist -> Extract [color="#f59e0b"];
28
+ Extract -> Driver [color="#a78bfa"];
29
+ Extract -> Skill [color="#a78bfa"];
30
+ Extract -> Cron [color="#a78bfa"];
31
+ Driver -> CI [color="#38bdf8", penwidth=2];
32
+ Skill -> CI [label="pwn --ai", color="#38bdf8"];
33
+ Cron -> CI [color="#38bdf8"];
20
34
  }
@@ -1,28 +1,60 @@
1
- digraph "PWN Memory & Skills Detailed Data Flow" {
2
- rankdir=TB;
3
- node [shape=box, style=rounded, fontname="Arial", fontsize=9];
1
+ digraph "PWN_MemorySkills" {
2
+ graph [
3
+ label=<<B>Persistent Knowledge — Memory · Skills · Sessions</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">everything under ~/.pwn/ that shapes future prompts</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=TB, splines=spline, nodesep=0.55, ranksep=0.95,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
4
12
 
5
- Input [label="Successful Task\nOutcome in Agent"];
6
- Learn [label="PWN::AI::Agent::Learning\nnote_outcome"];
7
- Metrics [label="Metrics (success/duration)"];
8
- Introspect [label="learning_reflect\n+ LLM introspection"];
9
- Distill [label="learning_distill_skill"];
10
- SkillCreate [label="skill_create / edit"];
11
- SkillStore [label="~/.pwn/skills/*.md\n(YAML frontmatter\n+ markdown + references)", shape=cylinder, fillcolor=lightyellow];
12
- MemStore [label="~/.pwn/memory.json", shape=cylinder, fillcolor=lightyellow];
13
- SkillList [label="skill_list / skill_view"];
14
- AgentPrompt [label="Agent System Prompt\n(injects skills + memory)"];
15
- Recall [label="memory_recall"];
13
+ subgraph cluster_write {
14
+ label="Write-Side Tools"; fontcolor="#a7f3d0"; style=rounded;
15
+ color="#047857"; bgcolor="#022c22";
16
+ Rem [label="memory_remember\nkey · value · category", fillcolor="#6ee7b7"];
17
+ Skc [label="skill_create\nskill_add_reference", fillcolor="#6ee7b7"];
18
+ Note [label="learning_note_outcome\nlearning_reflect", fillcolor="#6ee7b7"];
19
+ Dist [label="learning_distill_skill\n(session skill)", fillcolor="#6ee7b7"];
20
+ }
21
+ {rank=same; Rem; Skc; Note; Dist}
16
22
 
17
- Input -> Learn;
18
- Learn -> Metrics;
19
- Learn -> Introspect;
20
- Introspect -> Distill;
21
- Distill -> SkillCreate;
22
- SkillCreate -> SkillStore;
23
- SkillStore -> SkillList;
24
- SkillList -> AgentPrompt;
25
- Input -> MemStore [label="remember key facts"];
26
- Recall -> AgentPrompt;
27
- MemStore -> Recall;
23
+ subgraph cluster_files {
24
+ label="~/.pwn/"; fontcolor="#fde68a"; style=rounded;
25
+ color="#a16207"; bgcolor="#422006";
26
+ Fmem [label="memory.json\nfact · pref · lesson · env", shape=cylinder, fillcolor="#fcd34d"];
27
+ Fskl [label="skills/*.md\nYAML front-matter refs", shape=cylinder, fillcolor="#fcd34d"];
28
+ Flrn [label="learning.jsonl\noutcome log", shape=cylinder, fillcolor="#fcd34d"];
29
+ Fses [label="sessions/*.jsonl\ntranscripts", shape=cylinder, fillcolor="#fcd34d"];
30
+ }
31
+ {rank=same; Fmem; Fskl; Flrn; Fses}
32
+
33
+ subgraph cluster_read {
34
+ label="Read-Side / Injection"; fontcolor="#ddd6fe"; style=rounded;
35
+ color="#6d28d9"; bgcolor="#2e1065";
36
+ Rec [label="memory_recall", fillcolor="#c4b5fd"];
37
+ Skv [label="skill_list · view", fillcolor="#c4b5fd"];
38
+ Out [label="learning_outcomes\nlearning_stats", fillcolor="#c4b5fd"];
39
+ Sesv [label="sessions_view\nsessions_current", fillcolor="#c4b5fd"];
40
+ }
41
+ {rank=same; Rec; Skv; Out; Sesv}
42
+
43
+ Prompt [label="PromptBuilder\nMEMORY + SKILLS + LEARNING blocks", fillcolor="#7dd3fc", penwidth=2];
44
+
45
+ Rem -> Fmem [color="#f59e0b"];
46
+ Skc -> Fskl [color="#f59e0b"];
47
+ Note -> Flrn [color="#f59e0b"];
48
+ Dist -> Fskl [color="#f59e0b"];
49
+ Dist -> Fses [dir=back, style=dashed, color="#fbbf24", label="mine"];
50
+
51
+ Fmem -> Rec [color="#a78bfa"];
52
+ Fskl -> Skv [color="#a78bfa"];
53
+ Flrn -> Out [color="#a78bfa"];
54
+ Fses -> Sesv [color="#a78bfa"];
55
+
56
+ Rec -> Prompt [color="#38bdf8"];
57
+ Skv -> Prompt [color="#38bdf8"];
58
+ Out -> Prompt [color="#38bdf8"];
59
+ Sesv -> Prompt [color="#38bdf8"];
28
60
  }
@@ -1,22 +1,54 @@
1
- digraph "Network & Infrastructure Testing with PWN" {
2
- rankdir=TB;
3
- node [shape=box, style=rounded, fontname="Arial", fontsize=9];
1
+ digraph "PWN_Network" {
2
+ graph [
3
+ label=<<B>Network &amp; Infrastructure Testing</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">discovery → service enum → auth attacks → cloud / CI</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.2,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
4
12
 
5
- Targets [label="Targets\n(IPs, Domains, ASNs)", shape=box];
6
- Discovery [label="Discovery\n(NmapIt, pwn_nmap_discover,\nShodan, IPInfo, crt.sh)"];
7
- Enum [label="Service Enum\n(portscan, version, scripts)"];
8
- Auth [label="Auth Testing\n(basic_auth, DAOs,\ncredential spray)"];
9
- VulnScan [label="Vuln Scanning\n(NessusCloud, OpenVAS,\nNexpose, Zaproxy)"];
10
- Packet [label="Packet Crafting\n(PWN::Plugins::Packet,\nSock, Tor)"];
11
- Infra [label="Infra Specific\n(AWS, Jenkins, Jira,\nVsphere, RabbitMQ)"];
12
- ExploitNet [label="Network Exploits"];
13
+ CIDR [label="CIDR / ASN\nscope", fillcolor="#7dd3fc"];
13
14
 
14
- Targets -> Discovery;
15
- Discovery -> Enum;
16
- Enum -> Auth;
17
- Auth -> VulnScan;
18
- VulnScan -> Packet;
19
- Packet -> ExploitNet;
20
- VulnScan -> Infra;
21
- Infra -> ExploitNet;
15
+ subgraph cluster_disc {
16
+ label="Discover"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Nmap [label="NmapIt\npwn_nmap_discover_tcp_udp", fillcolor="#6ee7b7"];
19
+ Packet [label="Plugins::Packet\nraw craft / sniff", fillcolor="#6ee7b7"];
20
+ }
21
+ subgraph cluster_svc {
22
+ label="Service Enum"; fontcolor="#fde68a"; style=rounded;
23
+ color="#a16207"; bgcolor="#422006";
24
+ Sock [label="Plugins::Sock\nbanner grab", fillcolor="#fcd34d"];
25
+ DAO [label="DAO::LDAP · Mongo\nPostgres · SQLite3", fillcolor="#fcd34d"];
26
+ MQ [label="RabbitMQ\nSlack · IRC · Mail", fillcolor="#fcd34d"];
27
+ }
28
+ subgraph cluster_auth {
29
+ label="Auth / Exploit"; fontcolor="#fecaca"; style=rounded;
30
+ color="#b91c1c"; bgcolor="#450a0a";
31
+ MSF [label="Metasploit\nmsf_postgres_login", fillcolor="#fda4af"];
32
+ Auth [label="BasicAuth · OAuth2\nAuthenticationHelper", fillcolor="#fda4af"];
33
+ }
34
+ subgraph cluster_cloud {
35
+ label="Cloud / CI"; fontcolor="#ddd6fe"; style=rounded;
36
+ color="#6d28d9"; bgcolor="#2e1065";
37
+ AWS [label="PWN::AWS::*\n90 services", fillcolor="#c4b5fd"];
38
+ Jenk [label="Plugins::Jenkins\nvSphere · Vault", fillcolor="#c4b5fd"];
39
+ }
40
+ Report [label="Reports · DefectDojo", fillcolor="#7dd3fc"];
41
+
42
+ CIDR -> Nmap [color="#38bdf8"];
43
+ CIDR -> Packet [color="#38bdf8"];
44
+ Nmap -> Sock [color="#f59e0b"];
45
+ Nmap -> DAO [color="#f59e0b"];
46
+ Packet -> MQ [color="#f59e0b"];
47
+ Sock -> MSF [color="#fb7185"];
48
+ DAO -> Auth [color="#fb7185"];
49
+ MQ -> Auth [color="#fb7185"];
50
+ MSF -> AWS [color="#a78bfa"];
51
+ Auth -> Jenk [color="#a78bfa"];
52
+ AWS -> Report [color="#38bdf8"];
53
+ Jenk -> Report [color="#38bdf8"];
22
54
  }
@@ -1,49 +1,115 @@
1
- digraph "PWN Overall Architecture" {
2
- rankdir=TB;
3
- node [shape=box, style=rounded, fontname="Arial", fontsize=9];
4
- edge [fontname="Arial", fontsize=8];
5
-
6
- User [label="End User\n(Researcher, pwn-ai)", shape=box];
7
- REPL [label="PWN REPL\n(pry + pwn)", shape=ellipse, fillcolor=lightgreen, style=filled];
8
- AI [label="PWN::AI\n(Agent + Providers)", shape=ellipse, fillcolor=lightblue, style=filled];
9
-
10
- subgraph cluster_core {
11
- label="Core PWN";
12
- color=darkblue;
13
- Plugins [label="PWN::Plugins\n(67+ modules:\nBurp, NmapIt,\nMetasploit, Fuzz,\nTransparentBrowser...)" , shape=box];
14
- SAST [label="PWN::SAST", shape=box];
15
- Reports [label="PWN::Reports", shape=box];
16
- Driver [label="PWN::Driver", shape=box];
17
- Memory [label="PWN::Memory", shape=box];
1
+ digraph "PWN_Overall_Architecture" {
2
+ graph [
3
+ label=<<B>PWN Offensive Security Automation Framework</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Overall Architecture · lib/pwn/*</FONT>>,
4
+ labelloc=t, fontsize=22, fontname="Helvetica",
5
+ rankdir=TB, splines=spline, nodesep=0.55, ranksep=1.15,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, compound=true, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=11, style="filled,rounded",
9
+ shape=box, penwidth=1.4, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
12
+
13
+ /* ───────── L0 · ACTORS ───────── */
14
+ subgraph cluster_actors {
15
+ label="Actors"; fontcolor="#94a3b8"; style="rounded,dashed";
16
+ color="#334155"; bgcolor="#1e293b";
17
+ User [label="👤 Researcher\nRed Team · Bug Hunter", fillcolor="#7dd3fc"];
18
+ CI [label="⚙️ CI / CD\nHeadless pipelines", fillcolor="#7dd3fc"];
19
+ LLM [label="🤖 LLM Providers\nOpenAI · Anthropic\nGrok · Gemini · Ollama", fillcolor="#c4b5fd"];
20
+ Target [label="🎯 Attack Surface\nHosts · Web · Cloud\nRadio · Hardware", fillcolor="#fda4af"];
21
+ }
22
+ {rank=same; User; CI; LLM; Target}
23
+
24
+ /* ───────── L1 · ENTRY POINTS ───────── */
25
+ subgraph cluster_entry {
26
+ label="Entry Points (bin/)"; fontcolor="#7dd3fc";
27
+ style=rounded; color="#0369a1"; bgcolor="#0c4a6e"; penwidth=2;
28
+ REPL [label="🐚 pwn REPL\nPry + PWN:: preload", fillcolor="#7dd3fc"];
29
+ PwnAI [label="✨ pwn-ai\nAgent TUI · pwn --ai", fillcolor="#7dd3fc"];
30
+ CLI [label="📜 bin/pwn_*\n52 CLI drivers", fillcolor="#7dd3fc"];
31
+ Cronb [label="⏱ PWN::Cron\nScheduled jobs", fillcolor="#7dd3fc"];
18
32
  }
33
+ {rank=same; REPL; PwnAI; CLI; Cronb}
19
34
 
20
- subgraph cluster_persistent {
21
- label="Persistent Layer";
22
- color=darkgreen;
23
- Skills [label="PWN::Skills\n(~/.pwn/skills)", shape=cylinder, fillcolor=lightyellow];
24
- Sess [label="PWN::Sessions", shape=cylinder, fillcolor=lightyellow];
25
- Cron [label="PWN::Cron", shape=cylinder, fillcolor=lightyellow];
26
- Learn [label="Learning\n(Metrics + JSONL)", shape=cylinder, fillcolor=lightyellow];
35
+ /* ───────── L2 · AI AGENT CORE ───────── */
36
+ subgraph cluster_agent {
37
+ label="PWN::AI::Agent"; fontcolor="#ddd6fe";
38
+ style=rounded; color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
39
+ Loop [label="Loop\nplan → dispatch → observe", fillcolor="#c4b5fd"];
40
+ Registry [label="Registry\n10 toolsets · 45+ tools", fillcolor="#c4b5fd"];
41
+ Swarm [label="Swarm\npersonas · debate · bus", fillcolor="#c4b5fd"];
42
+ Prompt [label="PromptBuilder\nMEMORY · SKILLS · EXTRO",fillcolor="#c4b5fd"];
27
43
  }
44
+ {rank=same; Loop; Registry; Swarm; Prompt}
45
+
46
+ /* ───────── L3 · CAPABILITY NAMESPACES ───────── */
47
+ subgraph cluster_caps {
48
+ label="Capability Namespaces (lib/pwn/*)"; fontcolor="#a7f3d0";
49
+ style=rounded; color="#047857"; bgcolor="#022c22"; penwidth=2;
50
+ Plugins [label="Plugins\n66 modules", fillcolor="#6ee7b7"];
51
+ SAST [label="SAST\n48 rules", fillcolor="#6ee7b7"];
52
+ WWW [label="WWW\n21 site drivers", fillcolor="#6ee7b7"];
53
+ AWS [label="AWS\n90 services", fillcolor="#6ee7b7"];
54
+ SDR [label="SDR\nGQRX · Flipper · RFID", fillcolor="#6ee7b7"];
55
+ Chain [label="Blockchain\nBTC · ETH", fillcolor="#6ee7b7"];
56
+ Bounty [label="Bounty\nlifecycle replay", fillcolor="#6ee7b7"];
57
+ Reports [label="Reports\nHTML · JSON", fillcolor="#6ee7b7"];
58
+ }
59
+ {rank=same; Plugins; SAST; WWW; AWS; SDR; Chain; Bounty; Reports}
60
+
61
+ /* ───────── L4 · PERSISTENCE (~/.pwn) ───────── */
62
+ subgraph cluster_persist {
63
+ label="Persistence ~/.pwn/"; fontcolor="#fde68a";
64
+ style=rounded; color="#a16207"; bgcolor="#422006"; penwidth=2;
65
+ Memory [label="memory.json", shape=cylinder, fillcolor="#fcd34d"];
66
+ Skills [label="skills/*.md", shape=cylinder, fillcolor="#fcd34d"];
67
+ Learn [label="learning.jsonl", shape=cylinder, fillcolor="#fcd34d"];
68
+ Metrics [label="metrics.json", shape=cylinder, fillcolor="#fcd34d"];
69
+ Extro [label="extrospection.json", shape=cylinder, fillcolor="#fcd34d"];
70
+ Sessions [label="sessions/*.jsonl", shape=cylinder, fillcolor="#fcd34d"];
71
+ SwarmB [label="swarm/*/bus.jsonl", shape=cylinder, fillcolor="#fcd34d"];
72
+ CronF [label="cron/jobs.yml", shape=cylinder, fillcolor="#fcd34d"];
73
+ }
74
+ {rank=same; Memory; Skills; Learn; Metrics; Extro; Sessions; SwarmB; CronF}
75
+
76
+ /* ── L0 → L1 ── */
77
+ User -> REPL [color="#38bdf8"];
78
+ User -> PwnAI [color="#38bdf8"];
79
+ CI -> CLI [color="#38bdf8"];
80
+ CI -> Cronb [label="crontab", color="#38bdf8"];
81
+
82
+ /* ── L1 → L2 ── */
83
+ REPL -> Loop [color="#a78bfa"];
84
+ PwnAI -> Loop [label="natural language", color="#a78bfa", penwidth=2];
85
+ PwnAI -> Registry [color="#a78bfa"];
86
+ CLI -> Swarm [style=invis];
87
+ Cronb -> Prompt [style=invis];
88
+
89
+ /* ── L2 → L3 ── */
90
+ Loop -> Plugins [label="pwn_eval", color="#34d399", penwidth=2];
91
+ Loop -> SAST [color="#34d399"];
92
+ Registry -> WWW [color="#34d399"];
93
+ Registry -> AWS [color="#34d399"];
94
+ Swarm -> SDR [color="#34d399"];
95
+ Swarm -> Chain [color="#34d399"];
96
+ Prompt -> Bounty [style=invis];
97
+ Prompt -> Reports [style=invis];
98
+ CLI -> Plugins [color="#34d399", constraint=false];
99
+
100
+ /* ── L3 → L4 ── */
101
+ Plugins -> Memory [color="#f59e0b"];
102
+ SAST -> Skills [color="#f59e0b"];
103
+ WWW -> Learn [color="#f59e0b"];
104
+ AWS -> Metrics [color="#f59e0b"];
105
+ SDR -> Extro [color="#f59e0b"];
106
+ Chain -> Sessions [color="#f59e0b"];
107
+ Bounty -> SwarmB [color="#f59e0b"];
108
+ Reports -> CronF [color="#f59e0b"];
28
109
 
29
- BinDrivers [label="/opt/pwn/bin/\n(Drivers & CLIs)", shape=box];
30
-
31
- User -> REPL [label="pwn / pwn-ai"];
32
- REPL -> AI [label="launch pwn-ai"];
33
- REPL -> Plugins [label="direct invocation"];
34
- REPL -> SAST;
35
- REPL -> Reports;
36
- REPL -> Driver;
37
- AI -> Plugins [label="tool calls\npwn_eval"];
38
- AI -> Memory [label="remember/recall"];
39
- REPL -> Memory;
40
- REPL -> BinDrivers;
41
- Driver -> BinDrivers;
42
- Plugins -> Learn;
43
- AI -> Learn [label="distill skills"];
44
- Learn -> Skills [label="promote successful"];
45
- Skills -> AI [label="context injection"];
46
- Skills -> REPL;
47
- Cron -> REPL [label="schedule drivers/agents"];
48
- Sess -> REPL [label="replay / audit"];
110
+ /* ── side flows (few, non-constraining) ── */
111
+ Loop -> LLM [label="tool-use API", color="#c4b5fd", constraint=false, penwidth=2];
112
+ Plugins -> Target [label="attack", color="#fb7185", constraint=false, penwidth=2];
113
+ Prompt -> Memory [label="inject", dir=back, color="#fbbf24", constraint=false, style=dashed];
114
+ Reports -> User [label="findings", color="#38bdf8", constraint=false, penwidth=2];
49
115
  }
@@ -1,29 +1,60 @@
1
- digraph "PWN Penetration Testing Workflow" {
2
- rankdir=TB;
3
- node [shape=box, style=rounded, fontname="Arial", fontsize=9];
4
- edge [fontname="Arial", fontsize=8];
1
+ digraph "PWN_Pentest" {
2
+ graph [
3
+ label=<<B>End-to-End Penetration Testing with PWN</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">recon → enumerate → exploit → post-ex → report</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.2,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
5
12
 
6
- Target [label="Target System\n(Host, Network, App)", shape=box];
13
+ Scope [label="🎯 Scope\ntargets · rules", fillcolor="#7dd3fc"];
7
14
 
8
- Recon [label="Recon\n(NmapIt, Shodan,\nIPInfo, crt.sh)", shape=ellipse, fillcolor=lightblue];
9
- Scanning [label="Vuln Scanning\n(OpenVAS, Nessus,\nNexpose, ZAP/Burp)", shape=ellipse, fillcolor=lightblue];
10
- Web [label="Web App Testing\n(TransparentBrowser,\nBurpSuite, Zaproxy,\nURI Buster)", shape=ellipse, fillcolor=lightblue];
11
- Fuzz [label="Fuzzing\n(PWN::Plugins::Fuzz,\npwn_fuzz_net_app_proto)", shape=ellipse, fillcolor=lightblue];
12
- Exploit [label="Exploitation\n(Metasploit, custom\nBeEF, Serial, etc.)", shape=ellipse, fillcolor=lightcoral];
13
- Post [label="Post-Exploitation\n(PS, FileFu, SSH,\ncredential extraction)", shape=ellipse, fillcolor=lightcoral];
14
- Report [label="Reporting\n(PWN::Reports)", shape=ellipse, fillcolor=lightgreen];
15
+ subgraph cluster_recon {
16
+ label="1 · Recon"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Shodan [label="Plugins::Shodan\nHunter · IPInfo", fillcolor="#6ee7b7"];
19
+ CrtSh [label="bin/pwn_crt_sh\nWWW::WaybackMachine", fillcolor="#6ee7b7"];
20
+ }
21
+ subgraph cluster_enum {
22
+ label="2 · Enumerate"; fontcolor="#a7f3d0"; style=rounded;
23
+ color="#047857"; bgcolor="#022c22";
24
+ Nmap [label="Plugins::NmapIt\nTCP/UDP discover", fillcolor="#6ee7b7"];
25
+ Spider[label="Plugins::Spider\nTransparentBrowser", fillcolor="#6ee7b7"];
26
+ }
27
+ subgraph cluster_vuln {
28
+ label="3 · Vuln Scan"; fontcolor="#fde68a"; style=rounded;
29
+ color="#a16207"; bgcolor="#422006";
30
+ Burp [label="Plugins::BurpSuite\nactive scan", fillcolor="#fcd34d"];
31
+ Nessus [label="NessusCloud\nOpenVAS · Nexpose", fillcolor="#fcd34d"];
32
+ }
33
+ subgraph cluster_xpl {
34
+ label="4 · Exploit"; fontcolor="#fecaca"; style=rounded;
35
+ color="#b91c1c"; bgcolor="#450a0a";
36
+ MSF [label="Plugins::Metasploit", fillcolor="#fda4af"];
37
+ Fuzz [label="Plugins::Fuzz\nPacket · Sock", fillcolor="#fda4af"];
38
+ }
39
+ subgraph cluster_post {
40
+ label="5 · Post-Ex"; fontcolor="#ddd6fe"; style=rounded;
41
+ color="#6d28d9"; bgcolor="#2e1065";
42
+ Beef [label="Plugins::BeEF\nAndroid · Serial", fillcolor="#c4b5fd"];
43
+ Tor [label="Plugins::Tor\npivot / exfil", fillcolor="#c4b5fd"];
44
+ }
45
+ Report [label="PWN::Reports\nHTML · JSON · DefectDojo", fillcolor="#7dd3fc"];
15
46
 
16
- MemorySkills [label="Memory + Skills\n(persistent context)", shape=cylinder];
17
-
18
- Target -> Recon;
19
- Recon -> Scanning;
20
- Scanning -> Web;
21
- Web -> Fuzz;
22
- Fuzz -> Exploit;
23
- Exploit -> Post;
24
- Post -> Report;
25
-
26
- Report -> MemorySkills [label="note outcomes"];
27
- MemorySkills -> Recon [label="recall previous\nfindings"];
28
- MemorySkills -> Exploit [label="reuse exploits"];
47
+ Scope -> Shodan [color="#38bdf8"];
48
+ Scope -> CrtSh [color="#38bdf8"];
49
+ Shodan -> Nmap [color="#34d399"];
50
+ CrtSh -> Spider [color="#34d399"];
51
+ Nmap -> Burp [color="#f59e0b"];
52
+ Nmap -> Nessus [color="#f59e0b"];
53
+ Spider -> Burp [color="#f59e0b"];
54
+ Burp -> MSF [color="#fb7185"];
55
+ Nessus -> Fuzz [color="#fb7185"];
56
+ MSF -> Beef [color="#a78bfa"];
57
+ Fuzz -> Tor [color="#a78bfa"];
58
+ Beef -> Report [color="#38bdf8", penwidth=2];
59
+ Tor -> Report [color="#38bdf8", penwidth=2];
29
60
  }
@@ -0,0 +1,29 @@
1
+ digraph "PWN_Persistence" {
2
+ graph [
3
+ label=<<B>~/.pwn/ — Everything PWN Persists Across Sessions</B>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.3, ranksep=1.4,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [color="#94a3b8", penwidth=1.1, arrowsize=0.7];
11
+
12
+ Root [label="~/.pwn/", shape=folder, fillcolor="#7dd3fc", fontsize=13];
13
+
14
+ node [shape=cylinder, fillcolor="#fcd34d"];
15
+ cfg [label="config.yml\nengines · keys · agent opts"];
16
+ mem [label="memory.json\nfacts · prefs · lessons · env"];
17
+ skl [label="skills/*.md\nreusable procedures + refs"];
18
+ lrn [label="learning.jsonl\ntask outcomes"];
19
+ met [label="metrics.json\nper-tool telemetry"];
20
+ ext [label="extrospection.json\nhost snapshot + observations"];
21
+ ses [label="sessions/*.jsonl\ntranscripts"];
22
+ crn [label="cron/jobs.yml\nscheduled jobs + logs"];
23
+ agt [label="agents.yml\npersona registry"];
24
+ swm [label="swarm/<id>/bus.jsonl\nmulti-agent chat"];
25
+ hist [label="~/.pwn_history\nREPL history"];
26
+
27
+ Root->cfg; Root->mem; Root->skl; Root->lrn; Root->met; Root->ext;
28
+ Root->ses; Root->crn; Root->agt; Root->swm; Root->hist;
29
+ }