pwn 0.5.620 → 0.5.621

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/documentation/Agent-Tool-Registry.md +2 -2
  4. data/documentation/Cron.md +13 -0
  5. data/documentation/Diagrams.md +1 -1
  6. data/documentation/Extrospection.md +71 -5
  7. data/documentation/Home.md +2 -2
  8. data/documentation/How-PWN-Works.md +1 -1
  9. data/documentation/Mistakes.md +2 -1
  10. data/documentation/Persistence.md +2 -1
  11. data/documentation/Skills-Memory-Learning.md +1 -0
  12. data/documentation/Transparent-Browser.md +18 -1
  13. data/documentation/diagrams/agent-tool-registry.svg +55 -54
  14. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  15. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  16. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  17. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  18. data/documentation/diagrams/cron-scheduling.svg +23 -23
  19. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  20. data/documentation/diagrams/dot/extrospection-world-awareness.dot +29 -8
  21. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -0
  22. data/documentation/diagrams/dot/overall-pwn-architecture.dot +2 -2
  23. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  24. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
  25. data/documentation/diagrams/driver-framework.svg +13 -13
  26. data/documentation/diagrams/extrospection-world-awareness.svg +229 -99
  27. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  28. data/documentation/diagrams/hardware-hacking.svg +18 -18
  29. data/documentation/diagrams/history-to-drivers.svg +18 -18
  30. data/documentation/diagrams/memory-skills-detailed.svg +124 -101
  31. data/documentation/diagrams/mistakes-negative-feedback.svg +55 -55
  32. data/documentation/diagrams/network-infra-testing.svg +27 -27
  33. data/documentation/diagrams/overall-pwn-architecture.svg +85 -85
  34. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  35. data/documentation/diagrams/persistence-filesystem.svg +94 -85
  36. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  37. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +226 -180
  38. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  39. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  40. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  41. data/documentation/diagrams/sdr-radio-flow.svg +31 -31
  42. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  43. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  44. data/documentation/diagrams/web-application-testing.svg +26 -26
  45. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  46. data/documentation/pwn-ai-Agent.md +1 -1
  47. data/lib/pwn/ai/agent/extrospection.rb +433 -4
  48. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  49. data/lib/pwn/sdr/decoder/adsb.rb +14 -33
  50. data/lib/pwn/sdr/decoder/apt.rb +97 -36
  51. data/lib/pwn/sdr/decoder/base.rb +258 -171
  52. data/lib/pwn/sdr/decoder/bluetooth.rb +13 -20
  53. data/lib/pwn/sdr/decoder/dect.rb +13 -27
  54. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  55. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  56. data/lib/pwn/sdr/decoder/gps.rb +12 -21
  57. data/lib/pwn/sdr/decoder/gsm.rb +21 -73
  58. data/lib/pwn/sdr/decoder/iridium.rb +11 -26
  59. data/lib/pwn/sdr/decoder/lora.rb +16 -23
  60. data/lib/pwn/sdr/decoder/lte.rb +11 -32
  61. data/lib/pwn/sdr/decoder/morse.rb +95 -21
  62. data/lib/pwn/sdr/decoder/p25.rb +19 -16
  63. data/lib/pwn/sdr/decoder/pager.rb +22 -38
  64. data/lib/pwn/sdr/decoder/pocsag.rb +175 -68
  65. data/lib/pwn/sdr/decoder/rfid.rb +24 -33
  66. data/lib/pwn/sdr/decoder/rtl433.rb +21 -30
  67. data/lib/pwn/sdr/decoder/rtty.rb +100 -27
  68. data/lib/pwn/sdr/decoder/wifi.rb +21 -42
  69. data/lib/pwn/sdr/decoder/zigbee.rb +18 -40
  70. data/lib/pwn/sdr/decoder.rb +8 -0
  71. data/lib/pwn/version.rb +1 -1
  72. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  73. data/third_party/pwn_rdoc.jsonl +24 -3
  74. metadata +3 -1
@@ -9,46 +9,46 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 777.83)">
10
10
  <title>PWN_Overall_Architecture</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-777.83 1217.38,-777.83 1217.38,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="323.09" y="-710.73" font-family="sans-Serif" font-weight="bold" font-size="22.00" fill="#e2e8f0">PWN — Offensive Security Automation Framework</text>
13
- <text xml:space="preserve" text-anchor="start" x="515.09" y="-699.18" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Overall Architecture · lib/pwn/*</text>
12
+ <text xml:space="preserve" text-anchor="start" x="323.09" y="-710.73" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="22.00" fill="#e2e8f0">PWN — Offensive Security Automation Framework</text>
13
+ <text xml:space="preserve" text-anchor="start" x="515.09" y="-699.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">Overall Architecture · lib/pwn/*</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_actors</title>
16
16
  <path fill="#1e293b" stroke="#334155" stroke-dasharray="5,2" d="M310,-587.62C310,-587.62 895,-587.62 895,-587.62 901,-587.62 907,-593.62 907,-599.62 907,-599.62 907,-673.62 907,-673.62 907,-679.62 901,-685.62 895,-685.62 895,-685.62 310,-685.62 310,-685.62 304,-685.62 298,-679.62 298,-673.62 298,-673.62 298,-599.62 298,-599.62 298,-593.62 304,-587.62 310,-587.62"/>
17
- <text xml:space="preserve" text-anchor="middle" x="602.5" y="-660.73" font-family="sans-Serif" font-size="22.00" fill="#94a3b8">Actors</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="602.5" y="-660.73" font-family="Helvetica,sans-Serif" font-size="22.00" fill="#94a3b8">Actors</text>
18
18
  </g>
19
19
  <g id="clust3" class="cluster">
20
20
  <title>cluster_entry</title>
21
21
  <path fill="#0c4a6e" stroke="#0369a1" stroke-width="2" d="M176,-449.62C176,-449.62 694,-449.62 694,-449.62 700,-449.62 706,-455.62 706,-461.62 706,-461.62 706,-523.12 706,-523.12 706,-529.12 700,-535.12 694,-535.12 694,-535.12 176,-535.12 176,-535.12 170,-535.12 164,-529.12 164,-523.12 164,-523.12 164,-461.62 164,-461.62 164,-455.62 170,-449.62 176,-449.62"/>
22
- <text xml:space="preserve" text-anchor="middle" x="435" y="-510.23" font-family="sans-Serif" font-size="22.00" fill="#7dd3fc">Entry Points &#160;(bin/)</text>
22
+ <text xml:space="preserve" text-anchor="middle" x="435" y="-510.23" font-family="Helvetica,sans-Serif" font-size="22.00" fill="#7dd3fc">Entry Points &#160;(bin/)</text>
23
23
  </g>
24
24
  <g id="clust5" class="cluster">
25
25
  <title>cluster_agent</title>
26
26
  <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M143,-299.12C143,-299.12 764,-299.12 764,-299.12 770,-299.12 776,-305.12 776,-311.12 776,-311.12 776,-385.12 776,-385.12 776,-391.12 770,-397.12 764,-397.12 764,-397.12 143,-397.12 143,-397.12 137,-397.12 131,-391.12 131,-385.12 131,-385.12 131,-311.12 131,-311.12 131,-305.12 137,-299.12 143,-299.12"/>
27
- <text xml:space="preserve" text-anchor="middle" x="453.5" y="-372.23" font-family="sans-Serif" font-size="22.00" fill="#ddd6fe">PWN::AI::Agent</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="453.5" y="-372.23" font-family="Helvetica,sans-Serif" font-size="22.00" fill="#ddd6fe">PWN::AI::Agent</text>
28
28
  </g>
29
29
  <g id="clust7" class="cluster">
30
30
  <title>cluster_caps</title>
31
31
  <path fill="#022c22" stroke="#047857" stroke-width="2" d="M34,-148.62C34,-148.62 951,-148.62 951,-148.62 957,-148.62 963,-154.62 963,-160.62 963,-160.62 963,-234.62 963,-234.62 963,-240.62 957,-246.62 951,-246.62 951,-246.62 34,-246.62 34,-246.62 28,-246.62 22,-240.62 22,-234.62 22,-234.62 22,-160.62 22,-160.62 22,-154.62 28,-148.62 34,-148.62"/>
32
- <text xml:space="preserve" text-anchor="middle" x="492.5" y="-221.72" font-family="sans-Serif" font-size="22.00" fill="#a7f3d0">Capability Namespaces &#160;(lib/pwn/*)</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="492.5" y="-221.72" font-family="Helvetica,sans-Serif" font-size="22.00" fill="#a7f3d0">Capability Namespaces &#160;(lib/pwn/*)</text>
33
33
  </g>
34
34
  <g id="clust9" class="cluster">
35
35
  <title>cluster_persist</title>
36
- <path fill="#422006" stroke="#a16207" stroke-width="2" d="M20,-8C20,-8 1079,-8 1079,-8 1085,-8 1091,-14 1091,-20 1091,-20 1091,-93.62 1091,-93.62 1091,-99.62 1085,-105.62 1079,-105.62 1079,-105.62 20,-105.62 20,-105.62 14,-105.62 8,-99.62 8,-93.62 8,-93.62 8,-20 8,-20 8,-14 14,-8 20,-8"/>
37
- <text xml:space="preserve" text-anchor="middle" x="549.5" y="-80.72" font-family="sans-Serif" font-size="22.00" fill="#fde68a">Persistence &#160;~/.pwn/</text>
36
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M20,-8C20,-8 1089,-8 1089,-8 1095,-8 1101,-14 1101,-20 1101,-20 1101,-93.62 1101,-93.62 1101,-99.62 1095,-105.62 1089,-105.62 1089,-105.62 20,-105.62 20,-105.62 14,-105.62 8,-99.62 8,-93.62 8,-93.62 8,-20 8,-20 8,-14 14,-8 20,-8"/>
37
+ <text xml:space="preserve" text-anchor="middle" x="554.5" y="-80.72" font-family="Helvetica,sans-Serif" font-size="22.00" fill="#fde68a">Persistence &#160;~/.pwn/</text>
38
38
  </g>
39
39
  <!-- User -->
40
40
  <g id="node1" class="node">
41
41
  <title>User</title>
42
42
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M424,-637.88C424,-637.88 318,-637.88 318,-637.88 312,-637.88 306,-631.88 306,-625.88 306,-625.88 306,-613.88 306,-613.88 306,-607.88 312,-601.88 318,-601.88 318,-601.88 424,-601.88 424,-601.88 430,-601.88 436,-607.88 436,-613.88 436,-613.88 436,-625.88 436,-625.88 436,-631.88 430,-637.88 424,-637.88"/>
43
- <text xml:space="preserve" text-anchor="middle" x="371" y="-622.92" font-family="sans-Serif" font-size="11.00" fill="#0f172a">👤 &#160;Researcher</text>
44
- <text xml:space="preserve" text-anchor="middle" x="371" y="-609.42" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Red Team · Bug Hunter</text>
43
+ <text xml:space="preserve" text-anchor="middle" x="371" y="-622.92" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">👤 &#160;Researcher</text>
44
+ <text xml:space="preserve" text-anchor="middle" x="371" y="-609.42" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Red Team · Bug Hunter</text>
45
45
  </g>
46
46
  <!-- REPL -->
47
47
  <g id="node5" class="node">
48
48
  <title>REPL</title>
49
49
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M276.25,-493.62C276.25,-493.62 183.75,-493.62 183.75,-493.62 177.75,-493.62 171.75,-487.62 171.75,-481.62 171.75,-481.62 171.75,-469.62 171.75,-469.62 171.75,-463.62 177.75,-457.62 183.75,-457.62 183.75,-457.62 276.25,-457.62 276.25,-457.62 282.25,-457.62 288.25,-463.62 288.25,-469.62 288.25,-469.62 288.25,-481.62 288.25,-481.62 288.25,-487.62 282.25,-493.62 276.25,-493.62"/>
50
- <text xml:space="preserve" text-anchor="middle" x="230" y="-478.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🐚 &#160;pwn REPL</text>
51
- <text xml:space="preserve" text-anchor="middle" x="230" y="-465.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Pry + PWN:: preload</text>
50
+ <text xml:space="preserve" text-anchor="middle" x="230" y="-478.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">🐚 &#160;pwn REPL</text>
51
+ <text xml:space="preserve" text-anchor="middle" x="230" y="-465.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Pry + PWN:: preload</text>
52
52
  </g>
53
53
  <!-- User&#45;&gt;REPL -->
54
54
  <g id="edge1" class="edge">
@@ -60,8 +60,8 @@
60
60
  <g id="node6" class="node">
61
61
  <title>PwnAI</title>
62
62
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M429.75,-493.62C429.75,-493.62 340.25,-493.62 340.25,-493.62 334.25,-493.62 328.25,-487.62 328.25,-481.62 328.25,-481.62 328.25,-469.62 328.25,-469.62 328.25,-463.62 334.25,-457.62 340.25,-457.62 340.25,-457.62 429.75,-457.62 429.75,-457.62 435.75,-457.62 441.75,-463.62 441.75,-469.62 441.75,-469.62 441.75,-481.62 441.75,-481.62 441.75,-487.62 435.75,-493.62 429.75,-493.62"/>
63
- <text xml:space="preserve" text-anchor="middle" x="385" y="-478.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">✨ &#160;pwn&#45;ai</text>
64
- <text xml:space="preserve" text-anchor="middle" x="385" y="-465.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Agent TUI · pwn &#45;&#45;ai</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-478.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">✨ &#160;pwn&#45;ai</text>
64
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-465.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Agent TUI · pwn &#45;&#45;ai</text>
65
65
  </g>
66
66
  <!-- User&#45;&gt;PwnAI -->
67
67
  <g id="edge2" class="edge">
@@ -73,15 +73,15 @@
73
73
  <g id="node2" class="node">
74
74
  <title>CI</title>
75
75
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M570,-637.88C570,-637.88 488,-637.88 488,-637.88 482,-637.88 476,-631.88 476,-625.88 476,-625.88 476,-613.88 476,-613.88 476,-607.88 482,-601.88 488,-601.88 488,-601.88 570,-601.88 570,-601.88 576,-601.88 582,-607.88 582,-613.88 582,-613.88 582,-625.88 582,-625.88 582,-631.88 576,-637.88 570,-637.88"/>
76
- <text xml:space="preserve" text-anchor="middle" x="529" y="-622.92" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
77
- <text xml:space="preserve" text-anchor="middle" x="529" y="-609.42" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Headless pipelines</text>
76
+ <text xml:space="preserve" text-anchor="middle" x="529" y="-622.92" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
77
+ <text xml:space="preserve" text-anchor="middle" x="529" y="-609.42" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Headless pipelines</text>
78
78
  </g>
79
79
  <!-- CLI -->
80
80
  <g id="node7" class="node">
81
81
  <title>CLI</title>
82
82
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M553.75,-493.62C553.75,-493.62 494.25,-493.62 494.25,-493.62 488.25,-493.62 482.25,-487.62 482.25,-481.62 482.25,-481.62 482.25,-469.62 482.25,-469.62 482.25,-463.62 488.25,-457.62 494.25,-457.62 494.25,-457.62 553.75,-457.62 553.75,-457.62 559.75,-457.62 565.75,-463.62 565.75,-469.62 565.75,-469.62 565.75,-481.62 565.75,-481.62 565.75,-487.62 559.75,-493.62 553.75,-493.62"/>
83
- <text xml:space="preserve" text-anchor="middle" x="524" y="-478.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">📜 &#160;bin/pwn_*</text>
84
- <text xml:space="preserve" text-anchor="middle" x="524" y="-465.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">52 CLI drivers</text>
83
+ <text xml:space="preserve" text-anchor="middle" x="524" y="-478.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">📜 &#160;bin/pwn_*</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="524" y="-465.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">52 CLI drivers</text>
85
85
  </g>
86
86
  <!-- CI&#45;&gt;CLI -->
87
87
  <g id="edge3" class="edge">
@@ -93,38 +93,38 @@
93
93
  <g id="node8" class="node">
94
94
  <title>Cronb</title>
95
95
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M685.88,-493.62C685.88,-493.62 618.12,-493.62 618.12,-493.62 612.12,-493.62 606.12,-487.62 606.12,-481.62 606.12,-481.62 606.12,-469.62 606.12,-469.62 606.12,-463.62 612.12,-457.62 618.12,-457.62 618.12,-457.62 685.88,-457.62 685.88,-457.62 691.88,-457.62 697.88,-463.62 697.88,-469.62 697.88,-469.62 697.88,-481.62 697.88,-481.62 697.88,-487.62 691.88,-493.62 685.88,-493.62"/>
96
- <text xml:space="preserve" text-anchor="middle" x="652" y="-478.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⏱ &#160;PWN::Cron</text>
97
- <text xml:space="preserve" text-anchor="middle" x="652" y="-465.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Scheduled jobs</text>
96
+ <text xml:space="preserve" text-anchor="middle" x="652" y="-478.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">⏱ &#160;PWN::Cron</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="652" y="-465.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Scheduled jobs</text>
98
98
  </g>
99
99
  <!-- CI&#45;&gt;Cronb -->
100
100
  <g id="edge4" class="edge">
101
101
  <title>CI&#45;&gt;Cronb</title>
102
102
  <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M544.08,-601.43C565.75,-576.37 605.81,-530.05 630.55,-501.43"/>
103
103
  <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="632.39,-503.58 635.51,-495.7 628.16,-499.92 632.39,-503.58"/>
104
- <text xml:space="preserve" text-anchor="middle" x="609.56" y="-545.08" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">crontab</text>
104
+ <text xml:space="preserve" text-anchor="middle" x="609.56" y="-545.08" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">crontab</text>
105
105
  </g>
106
106
  <!-- LLM -->
107
107
  <g id="node3" class="node">
108
108
  <title>LLM</title>
109
109
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M734.38,-644.12C734.38,-644.12 633.62,-644.12 633.62,-644.12 627.62,-644.12 621.62,-638.12 621.62,-632.12 621.62,-632.12 621.62,-607.62 621.62,-607.62 621.62,-601.62 627.62,-595.62 633.62,-595.62 633.62,-595.62 734.38,-595.62 734.38,-595.62 740.38,-595.62 746.38,-601.62 746.38,-607.62 746.38,-607.62 746.38,-632.12 746.38,-632.12 746.38,-638.12 740.38,-644.12 734.38,-644.12"/>
110
- <text xml:space="preserve" text-anchor="middle" x="684" y="-629.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🤖 &#160;LLM Providers</text>
111
- <text xml:space="preserve" text-anchor="middle" x="684" y="-616.17" font-family="sans-Serif" font-size="11.00" fill="#0f172a">OpenAI · Anthropic</text>
112
- <text xml:space="preserve" text-anchor="middle" x="684" y="-602.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Grok · Gemini · Ollama</text>
110
+ <text xml:space="preserve" text-anchor="middle" x="684" y="-629.67" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">🤖 &#160;LLM Providers</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="684" y="-616.17" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">OpenAI · Anthropic</text>
112
+ <text xml:space="preserve" text-anchor="middle" x="684" y="-602.67" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Grok · Gemini · Ollama</text>
113
113
  </g>
114
114
  <!-- Target -->
115
115
  <g id="node4" class="node">
116
116
  <title>Target</title>
117
117
  <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M887.38,-644.12C887.38,-644.12 798.62,-644.12 798.62,-644.12 792.62,-644.12 786.62,-638.12 786.62,-632.12 786.62,-632.12 786.62,-607.62 786.62,-607.62 786.62,-601.62 792.62,-595.62 798.62,-595.62 798.62,-595.62 887.38,-595.62 887.38,-595.62 893.38,-595.62 899.38,-601.62 899.38,-607.62 899.38,-607.62 899.38,-632.12 899.38,-632.12 899.38,-638.12 893.38,-644.12 887.38,-644.12"/>
118
- <text xml:space="preserve" text-anchor="middle" x="843" y="-629.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🎯 &#160;Attack Surface</text>
119
- <text xml:space="preserve" text-anchor="middle" x="843" y="-616.17" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Hosts · Web · Cloud</text>
120
- <text xml:space="preserve" text-anchor="middle" x="843" y="-602.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Radio · Hardware</text>
118
+ <text xml:space="preserve" text-anchor="middle" x="843" y="-629.67" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">🎯 &#160;Attack Surface</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="843" y="-616.17" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Hosts · Web · Cloud</text>
120
+ <text xml:space="preserve" text-anchor="middle" x="843" y="-602.67" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Radio · Hardware</text>
121
121
  </g>
122
122
  <!-- Loop -->
123
123
  <g id="node9" class="node">
124
124
  <title>Loop</title>
125
125
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M275.38,-349.38C275.38,-349.38 150.62,-349.38 150.62,-349.38 144.62,-349.38 138.62,-343.38 138.62,-337.38 138.62,-337.38 138.62,-325.38 138.62,-325.38 138.62,-319.38 144.62,-313.38 150.62,-313.38 150.62,-313.38 275.38,-313.38 275.38,-313.38 281.38,-313.38 287.38,-319.38 287.38,-325.38 287.38,-325.38 287.38,-337.38 287.38,-337.38 287.38,-343.38 281.38,-349.38 275.38,-349.38"/>
126
- <text xml:space="preserve" text-anchor="middle" x="213" y="-334.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Loop</text>
127
- <text xml:space="preserve" text-anchor="middle" x="213" y="-320.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">plan → dispatch → observe</text>
126
+ <text xml:space="preserve" text-anchor="middle" x="213" y="-334.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Loop</text>
127
+ <text xml:space="preserve" text-anchor="middle" x="213" y="-320.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">plan → dispatch → observe</text>
128
128
  </g>
129
129
  <!-- REPL&#45;&gt;Loop -->
130
130
  <g id="edge5" class="edge">
@@ -137,14 +137,14 @@
137
137
  <title>PwnAI&#45;&gt;Loop</title>
138
138
  <path fill="none" stroke="#a78bfa" stroke-width="2" d="M360.1,-457.15C344.13,-445.72 323.11,-430.24 305.25,-415.62 282.23,-396.79 257.24,-374.1 239.09,-357.16"/>
139
139
  <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="241.22,-355.32 233.47,-351.89 237.39,-359.41 241.22,-355.32"/>
140
- <text xml:space="preserve" text-anchor="middle" x="340.12" y="-407.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">natural language</text>
140
+ <text xml:space="preserve" text-anchor="middle" x="340.12" y="-407.07" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">natural language</text>
141
141
  </g>
142
142
  <!-- Registry -->
143
143
  <g id="node10" class="node">
144
144
  <title>Registry</title>
145
145
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M430.12,-349.38C430.12,-349.38 339.88,-349.38 339.88,-349.38 333.88,-349.38 327.88,-343.38 327.88,-337.38 327.88,-337.38 327.88,-325.38 327.88,-325.38 327.88,-319.38 333.88,-313.38 339.88,-313.38 339.88,-313.38 430.12,-313.38 430.12,-313.38 436.12,-313.38 442.12,-319.38 442.12,-325.38 442.12,-325.38 442.12,-337.38 442.12,-337.38 442.12,-343.38 436.12,-349.38 430.12,-349.38"/>
146
- <text xml:space="preserve" text-anchor="middle" x="385" y="-334.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Registry</text>
147
- <text xml:space="preserve" text-anchor="middle" x="385" y="-320.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">10 toolsets · 52 tools</text>
146
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-334.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Registry</text>
147
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-320.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">10 toolsets · 54 tools</text>
148
148
  </g>
149
149
  <!-- PwnAI&#45;&gt;Registry -->
150
150
  <g id="edge7" class="edge">
@@ -156,16 +156,16 @@
156
156
  <g id="node11" class="node">
157
157
  <title>Swarm</title>
158
158
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M598.25,-349.38C598.25,-349.38 493.75,-349.38 493.75,-349.38 487.75,-349.38 481.75,-343.38 481.75,-337.38 481.75,-337.38 481.75,-325.38 481.75,-325.38 481.75,-319.38 487.75,-313.38 493.75,-313.38 493.75,-313.38 598.25,-313.38 598.25,-313.38 604.25,-313.38 610.25,-319.38 610.25,-325.38 610.25,-325.38 610.25,-337.38 610.25,-337.38 610.25,-343.38 604.25,-349.38 598.25,-349.38"/>
159
- <text xml:space="preserve" text-anchor="middle" x="546" y="-334.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Swarm</text>
160
- <text xml:space="preserve" text-anchor="middle" x="546" y="-320.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">personas · debate · bus</text>
159
+ <text xml:space="preserve" text-anchor="middle" x="546" y="-334.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Swarm</text>
160
+ <text xml:space="preserve" text-anchor="middle" x="546" y="-320.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">personas · debate · bus</text>
161
161
  </g>
162
162
  <!-- CLI&#45;&gt;Swarm -->
163
163
  <!-- Plugins -->
164
164
  <g id="node13" class="node">
165
165
  <title>Plugins</title>
166
166
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M89.75,-198.88C89.75,-198.88 42.25,-198.88 42.25,-198.88 36.25,-198.88 30.25,-192.88 30.25,-186.88 30.25,-186.88 30.25,-174.88 30.25,-174.88 30.25,-168.88 36.25,-162.88 42.25,-162.88 42.25,-162.88 89.75,-162.88 89.75,-162.88 95.75,-162.88 101.75,-168.88 101.75,-174.88 101.75,-174.88 101.75,-186.88 101.75,-186.88 101.75,-192.88 95.75,-198.88 89.75,-198.88"/>
167
- <text xml:space="preserve" text-anchor="middle" x="66" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Plugins</text>
168
- <text xml:space="preserve" text-anchor="middle" x="66" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">66 modules</text>
167
+ <text xml:space="preserve" text-anchor="middle" x="66" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Plugins</text>
168
+ <text xml:space="preserve" text-anchor="middle" x="66" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">66 modules</text>
169
169
  </g>
170
170
  <!-- CLI&#45;&gt;Plugins -->
171
171
  <g id="edge18" class="edge">
@@ -177,9 +177,9 @@
177
177
  <g id="node12" class="node">
178
178
  <title>Prompt</title>
179
179
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M756,-355.62C756,-355.62 662,-355.62 662,-355.62 656,-355.62 650,-349.62 650,-343.62 650,-343.62 650,-319.12 650,-319.12 650,-313.12 656,-307.12 662,-307.12 662,-307.12 756,-307.12 756,-307.12 762,-307.12 768,-313.12 768,-319.12 768,-319.12 768,-343.62 768,-343.62 768,-349.62 762,-355.62 756,-355.62"/>
180
- <text xml:space="preserve" text-anchor="middle" x="709" y="-341.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
181
- <text xml:space="preserve" text-anchor="middle" x="709" y="-327.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">MEMORY · SKILLS</text>
182
- <text xml:space="preserve" text-anchor="middle" x="709" y="-314.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">MISTAKES · EXTRO</text>
180
+ <text xml:space="preserve" text-anchor="middle" x="709" y="-341.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
181
+ <text xml:space="preserve" text-anchor="middle" x="709" y="-327.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">MEMORY · SKILLS</text>
182
+ <text xml:space="preserve" text-anchor="middle" x="709" y="-314.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">MISTAKES · EXTRO</text>
183
183
  </g>
184
184
  <!-- Cronb&#45;&gt;Prompt -->
185
185
  <!-- Loop&#45;&gt;LLM -->
@@ -187,21 +187,21 @@
187
187
  <title>Loop&#45;&gt;LLM</title>
188
188
  <path fill="none" stroke="#c4b5fd" stroke-width="2" d="M232.48,-349.99C250.62,-365.27 279.14,-386.56 308,-397.12 340.31,-408.95 350.84,-401.05 385,-405.12 458.7,-413.91 667.14,-393.76 716,-449.62 748.98,-487.34 725.09,-548.17 704.64,-585.72"/>
189
189
  <polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="2" points="702.27,-584.21 700.77,-592.56 707.15,-586.97 702.27,-584.21"/>
190
- <text xml:space="preserve" text-anchor="middle" x="757.07" y="-472.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tool&#45;use API</text>
190
+ <text xml:space="preserve" text-anchor="middle" x="757.07" y="-472.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">tool&#45;use API</text>
191
191
  </g>
192
192
  <!-- Loop&#45;&gt;Plugins -->
193
193
  <g id="edge10" class="edge">
194
194
  <title>Loop&#45;&gt;Plugins</title>
195
195
  <path fill="none" stroke="#34d399" stroke-width="2" d="M192.38,-312.83C173.44,-296.38 144.91,-270.77 122,-246.62 110.23,-234.22 97.72,-219.88 87.53,-207.86"/>
196
196
  <polygon fill="#34d399" stroke="#34d399" stroke-width="2" points="89.79,-206.21 82.5,-201.89 85.51,-209.81 89.79,-206.21"/>
197
- <text xml:space="preserve" text-anchor="middle" x="158.48" y="-256.57" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">pwn_eval</text>
197
+ <text xml:space="preserve" text-anchor="middle" x="158.48" y="-256.57" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">pwn_eval</text>
198
198
  </g>
199
199
  <!-- SAST -->
200
200
  <g id="node14" class="node">
201
201
  <title>SAST</title>
202
202
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M184.12,-198.88C184.12,-198.88 153.88,-198.88 153.88,-198.88 147.88,-198.88 141.88,-192.88 141.88,-186.88 141.88,-186.88 141.88,-174.88 141.88,-174.88 141.88,-168.88 147.88,-162.88 153.88,-162.88 153.88,-162.88 184.12,-162.88 184.12,-162.88 190.12,-162.88 196.12,-168.88 196.12,-174.88 196.12,-174.88 196.12,-186.88 196.12,-186.88 196.12,-192.88 190.12,-198.88 184.12,-198.88"/>
203
- <text xml:space="preserve" text-anchor="middle" x="169" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">SAST</text>
204
- <text xml:space="preserve" text-anchor="middle" x="169" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">48 rules</text>
203
+ <text xml:space="preserve" text-anchor="middle" x="169" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">SAST</text>
204
+ <text xml:space="preserve" text-anchor="middle" x="169" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">48 rules</text>
205
205
  </g>
206
206
  <!-- Loop&#45;&gt;SAST -->
207
207
  <g id="edge11" class="edge">
@@ -213,8 +213,8 @@
213
213
  <g id="node15" class="node">
214
214
  <title>WWW</title>
215
215
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M307.38,-198.88C307.38,-198.88 248.62,-198.88 248.62,-198.88 242.62,-198.88 236.62,-192.88 236.62,-186.88 236.62,-186.88 236.62,-174.88 236.62,-174.88 236.62,-168.88 242.62,-162.88 248.62,-162.88 248.62,-162.88 307.38,-162.88 307.38,-162.88 313.38,-162.88 319.38,-168.88 319.38,-174.88 319.38,-174.88 319.38,-186.88 319.38,-186.88 319.38,-192.88 313.38,-198.88 307.38,-198.88"/>
216
- <text xml:space="preserve" text-anchor="middle" x="278" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">WWW</text>
217
- <text xml:space="preserve" text-anchor="middle" x="278" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">21 site drivers</text>
216
+ <text xml:space="preserve" text-anchor="middle" x="278" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">WWW</text>
217
+ <text xml:space="preserve" text-anchor="middle" x="278" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">21 site drivers</text>
218
218
  </g>
219
219
  <!-- Registry&#45;&gt;WWW -->
220
220
  <g id="edge12" class="edge">
@@ -226,8 +226,8 @@
226
226
  <g id="node16" class="node">
227
227
  <title>AWS</title>
228
228
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M417,-198.88C417,-198.88 371,-198.88 371,-198.88 365,-198.88 359,-192.88 359,-186.88 359,-186.88 359,-174.88 359,-174.88 359,-168.88 365,-162.88 371,-162.88 371,-162.88 417,-162.88 417,-162.88 423,-162.88 429,-168.88 429,-174.88 429,-174.88 429,-186.88 429,-186.88 429,-192.88 423,-198.88 417,-198.88"/>
229
- <text xml:space="preserve" text-anchor="middle" x="394" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">AWS</text>
230
- <text xml:space="preserve" text-anchor="middle" x="394" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">90 services</text>
229
+ <text xml:space="preserve" text-anchor="middle" x="394" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">AWS</text>
230
+ <text xml:space="preserve" text-anchor="middle" x="394" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">90 services</text>
231
231
  </g>
232
232
  <!-- Registry&#45;&gt;AWS -->
233
233
  <g id="edge13" class="edge">
@@ -239,9 +239,9 @@
239
239
  <g id="node17" class="node">
240
240
  <title>SDR</title>
241
241
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M582.75,-205.12C582.75,-205.12 481.25,-205.12 481.25,-205.12 475.25,-205.12 469.25,-199.12 469.25,-193.12 469.25,-193.12 469.25,-168.62 469.25,-168.62 469.25,-162.62 475.25,-156.62 481.25,-156.62 481.25,-156.62 582.75,-156.62 582.75,-156.62 588.75,-156.62 594.75,-162.62 594.75,-168.62 594.75,-168.62 594.75,-193.12 594.75,-193.12 594.75,-199.12 588.75,-205.12 582.75,-205.12"/>
242
- <text xml:space="preserve" text-anchor="middle" x="532" y="-190.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">SDR</text>
243
- <text xml:space="preserve" text-anchor="middle" x="532" y="-177.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">GQRX · Flipper · RFID</text>
244
- <text xml:space="preserve" text-anchor="middle" x="532" y="-163.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Decoder::* (20)</text>
242
+ <text xml:space="preserve" text-anchor="middle" x="532" y="-190.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">SDR</text>
243
+ <text xml:space="preserve" text-anchor="middle" x="532" y="-177.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">GQRX · Flipper · RFID</text>
244
+ <text xml:space="preserve" text-anchor="middle" x="532" y="-163.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Decoder::* (20)</text>
245
245
  </g>
246
246
  <!-- Swarm&#45;&gt;SDR -->
247
247
  <g id="edge14" class="edge">
@@ -253,8 +253,8 @@
253
253
  <g id="node18" class="node">
254
254
  <title>Chain</title>
255
255
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M693,-198.88C693,-198.88 647,-198.88 647,-198.88 641,-198.88 635,-192.88 635,-186.88 635,-186.88 635,-174.88 635,-174.88 635,-168.88 641,-162.88 647,-162.88 647,-162.88 693,-162.88 693,-162.88 699,-162.88 705,-168.88 705,-174.88 705,-174.88 705,-186.88 705,-186.88 705,-192.88 699,-198.88 693,-198.88"/>
256
- <text xml:space="preserve" text-anchor="middle" x="670" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Blockchain</text>
257
- <text xml:space="preserve" text-anchor="middle" x="670" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">BTC · ETH</text>
256
+ <text xml:space="preserve" text-anchor="middle" x="670" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Blockchain</text>
257
+ <text xml:space="preserve" text-anchor="middle" x="670" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">BTC · ETH</text>
258
258
  </g>
259
259
  <!-- Swarm&#45;&gt;Chain -->
260
260
  <g id="edge15" class="edge">
@@ -266,16 +266,16 @@
266
266
  <g id="node19" class="node">
267
267
  <title>Bounty</title>
268
268
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M818.88,-198.88C818.88,-198.88 757.12,-198.88 757.12,-198.88 751.12,-198.88 745.12,-192.88 745.12,-186.88 745.12,-186.88 745.12,-174.88 745.12,-174.88 745.12,-168.88 751.12,-162.88 757.12,-162.88 757.12,-162.88 818.88,-162.88 818.88,-162.88 824.88,-162.88 830.88,-168.88 830.88,-174.88 830.88,-174.88 830.88,-186.88 830.88,-186.88 830.88,-192.88 824.88,-198.88 818.88,-198.88"/>
269
- <text xml:space="preserve" text-anchor="middle" x="788" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Bounty</text>
270
- <text xml:space="preserve" text-anchor="middle" x="788" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">lifecycle replay</text>
269
+ <text xml:space="preserve" text-anchor="middle" x="788" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Bounty</text>
270
+ <text xml:space="preserve" text-anchor="middle" x="788" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">lifecycle replay</text>
271
271
  </g>
272
272
  <!-- Prompt&#45;&gt;Bounty -->
273
273
  <!-- Reports -->
274
274
  <g id="node20" class="node">
275
275
  <title>Reports</title>
276
276
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M943.12,-198.88C943.12,-198.88 882.88,-198.88 882.88,-198.88 876.88,-198.88 870.88,-192.88 870.88,-186.88 870.88,-186.88 870.88,-174.88 870.88,-174.88 870.88,-168.88 876.88,-162.88 882.88,-162.88 882.88,-162.88 943.12,-162.88 943.12,-162.88 949.12,-162.88 955.12,-168.88 955.12,-174.88 955.12,-174.88 955.12,-186.88 955.12,-186.88 955.12,-192.88 949.12,-198.88 943.12,-198.88"/>
277
- <text xml:space="preserve" text-anchor="middle" x="913" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Reports</text>
278
- <text xml:space="preserve" text-anchor="middle" x="913" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HTML · JSON</text>
277
+ <text xml:space="preserve" text-anchor="middle" x="913" y="-183.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Reports</text>
278
+ <text xml:space="preserve" text-anchor="middle" x="913" y="-170.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">HTML · JSON</text>
279
279
  </g>
280
280
  <!-- Prompt&#45;&gt;Reports -->
281
281
  <!-- Memory -->
@@ -283,21 +283,21 @@
283
283
  <title>Memory</title>
284
284
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M93.75,-54.79C93.75,-56.6 76.38,-58.06 55,-58.06 33.62,-58.06 16.25,-56.6 16.25,-54.79 16.25,-54.79 16.25,-25.34 16.25,-25.34 16.25,-23.53 33.62,-22.06 55,-22.06 76.38,-22.06 93.75,-23.53 93.75,-25.34 93.75,-25.34 93.75,-54.79 93.75,-54.79"/>
285
285
  <path fill="none" stroke="#334155" stroke-width="1.4" d="M93.75,-54.79C93.75,-52.98 76.38,-51.52 55,-51.52 33.62,-51.52 16.25,-52.98 16.25,-54.79"/>
286
- <text xml:space="preserve" text-anchor="middle" x="55" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">memory.json</text>
286
+ <text xml:space="preserve" text-anchor="middle" x="55" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">memory.json</text>
287
287
  </g>
288
288
  <!-- Prompt&#45;&gt;Memory -->
289
289
  <g id="edge30" class="edge">
290
290
  <title>Prompt&#45;&gt;Memory</title>
291
291
  <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M778.21,-329.72C840.46,-324.99 928.72,-307.12 973,-246.62 998.72,-211.48 1003.02,-180.18 973,-148.62 907.14,-79.38 200.45,-146.35 114,-105.62 92.71,-95.6 75.57,-74.04 65.36,-58.6"/>
292
292
  <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="778.21,-326.92 770.41,-330.24 778.58,-332.5 778.21,-326.92"/>
293
- <text xml:space="preserve" text-anchor="middle" x="1004.81" y="-177.57" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
293
+ <text xml:space="preserve" text-anchor="middle" x="1004.81" y="-177.57" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
294
294
  </g>
295
295
  <!-- Plugins&#45;&gt;Target -->
296
296
  <g id="edge29" class="edge">
297
297
  <title>Plugins&#45;&gt;Target</title>
298
298
  <path fill="none" stroke="#fb7185" stroke-width="2" d="M75.58,-199.48C85.1,-214.99 101.25,-236.62 122,-246.62 141.43,-256 294.47,-253.25 316,-254.62 429.97,-261.92 748.87,-216.78 828,-299.12 902.44,-376.59 873.01,-519.39 854.13,-584.68"/>
299
299
  <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="851.46,-583.84 851.85,-592.31 856.83,-585.45 851.46,-583.84"/>
300
- <text xml:space="preserve" text-anchor="middle" x="886.71" y="-407.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">attack</text>
300
+ <text xml:space="preserve" text-anchor="middle" x="886.71" y="-407.07" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">attack</text>
301
301
  </g>
302
302
  <!-- Plugins&#45;&gt;Memory -->
303
303
  <g id="edge19" class="edge">
@@ -310,7 +310,7 @@
310
310
  <title>Skills</title>
311
311
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M198,-54.79C198,-56.6 183.66,-58.06 166,-58.06 148.34,-58.06 134,-56.6 134,-54.79 134,-54.79 134,-25.34 134,-25.34 134,-23.53 148.34,-22.06 166,-22.06 183.66,-22.06 198,-23.53 198,-25.34 198,-25.34 198,-54.79 198,-54.79"/>
312
312
  <path fill="none" stroke="#334155" stroke-width="1.4" d="M198,-54.79C198,-52.98 183.66,-51.52 166,-51.52 148.34,-51.52 134,-52.98 134,-54.79"/>
313
- <text xml:space="preserve" text-anchor="middle" x="166" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">skills/*.md</text>
313
+ <text xml:space="preserve" text-anchor="middle" x="166" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">skills/*.md</text>
314
314
  </g>
315
315
  <!-- SAST&#45;&gt;Skills -->
316
316
  <g id="edge20" class="edge">
@@ -323,7 +323,7 @@
323
323
  <title>Learn</title>
324
324
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M317.5,-54.79C317.5,-56.6 299.8,-58.06 278,-58.06 256.2,-58.06 238.5,-56.6 238.5,-54.79 238.5,-54.79 238.5,-25.34 238.5,-25.34 238.5,-23.53 256.2,-22.06 278,-22.06 299.8,-22.06 317.5,-23.53 317.5,-25.34 317.5,-25.34 317.5,-54.79 317.5,-54.79"/>
325
325
  <path fill="none" stroke="#334155" stroke-width="1.4" d="M317.5,-54.79C317.5,-52.98 299.8,-51.52 278,-51.52 256.2,-51.52 238.5,-52.98 238.5,-54.79"/>
326
- <text xml:space="preserve" text-anchor="middle" x="278" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">learning.jsonl</text>
326
+ <text xml:space="preserve" text-anchor="middle" x="278" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">learning.jsonl</text>
327
327
  </g>
328
328
  <!-- WWW&#45;&gt;Learn -->
329
329
  <g id="edge21" class="edge">
@@ -336,7 +336,7 @@
336
336
  <title>Metrics</title>
337
337
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M430.5,-54.79C430.5,-56.6 414.14,-58.06 394,-58.06 373.86,-58.06 357.5,-56.6 357.5,-54.79 357.5,-54.79 357.5,-25.34 357.5,-25.34 357.5,-23.53 373.86,-22.06 394,-22.06 414.14,-22.06 430.5,-23.53 430.5,-25.34 430.5,-25.34 430.5,-54.79 430.5,-54.79"/>
338
338
  <path fill="none" stroke="#334155" stroke-width="1.4" d="M430.5,-54.79C430.5,-52.98 414.14,-51.52 394,-51.52 373.86,-51.52 357.5,-52.98 357.5,-54.79"/>
339
- <text xml:space="preserve" text-anchor="middle" x="394" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">metrics.json</text>
339
+ <text xml:space="preserve" text-anchor="middle" x="394" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">metrics.json</text>
340
340
  </g>
341
341
  <!-- AWS&#45;&gt;Metrics -->
342
342
  <g id="edge22" class="edge">
@@ -349,68 +349,68 @@
349
349
  <title>MistF</title>
350
350
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M551.25,-54.79C551.25,-56.6 533.21,-58.06 511,-58.06 488.79,-58.06 470.75,-56.6 470.75,-54.79 470.75,-54.79 470.75,-25.34 470.75,-25.34 470.75,-23.53 488.79,-22.06 511,-22.06 533.21,-22.06 551.25,-23.53 551.25,-25.34 551.25,-25.34 551.25,-54.79 551.25,-54.79"/>
351
351
  <path fill="none" stroke="#334155" stroke-width="1.4" d="M551.25,-54.79C551.25,-52.98 533.21,-51.52 511,-51.52 488.79,-51.52 470.75,-52.98 470.75,-54.79"/>
352
- <text xml:space="preserve" text-anchor="middle" x="511" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">mistakes.json</text>
352
+ <text xml:space="preserve" text-anchor="middle" x="511" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">mistakes.json</text>
353
353
  </g>
354
354
  <!-- SDR&#45;&gt;MistF -->
355
355
  <!-- Extro -->
356
356
  <g id="node26" class="node">
357
357
  <title>Extro</title>
358
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M693.12,-59.75C693.12,-62.16 670.21,-64.12 642,-64.12 613.79,-64.12 590.88,-62.16 590.88,-59.75 590.88,-59.75 590.88,-20.38 590.88,-20.38 590.88,-17.96 613.79,-16 642,-16 670.21,-16 693.12,-17.96 693.12,-20.38 693.12,-20.38 693.12,-59.75 693.12,-59.75"/>
359
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M693.12,-59.75C693.12,-57.34 670.21,-55.38 642,-55.38 613.79,-55.38 590.88,-57.34 590.88,-59.75"/>
360
- <text xml:space="preserve" text-anchor="middle" x="642" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
361
- <text xml:space="preserve" text-anchor="middle" x="642" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">+ rf snapshot</text>
358
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M703,-59.75C703,-62.16 677.9,-64.12 647,-64.12 616.1,-64.12 591,-62.16 591,-59.75 591,-59.75 591,-20.38 591,-20.38 591,-17.96 616.1,-16 647,-16 677.9,-16 703,-17.96 703,-20.38 703,-20.38 703,-59.75 703,-59.75"/>
359
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M703,-59.75C703,-57.34 677.9,-55.38 647,-55.38 616.1,-55.38 591,-57.34 591,-59.75"/>
360
+ <text xml:space="preserve" text-anchor="middle" x="647" y="-43.11" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
361
+ <text xml:space="preserve" text-anchor="middle" x="647" y="-29.61" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">+ rf + web snapshot</text>
362
362
  </g>
363
363
  <!-- SDR&#45;&gt;Extro -->
364
364
  <g id="edge24" class="edge">
365
365
  <title>SDR&#45;&gt;Extro</title>
366
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M550.91,-156.01C569.28,-132.83 597.27,-97.51 617.37,-72.14"/>
367
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="619.34,-74.17 622.12,-66.16 614.95,-70.69 619.34,-74.17"/>
366
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M551.77,-156.01C570.97,-132.83 600.23,-97.51 621.25,-72.14"/>
367
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="623.29,-74.08 626.23,-66.13 618.97,-70.5 623.29,-74.08"/>
368
368
  </g>
369
369
  <!-- Sessions -->
370
370
  <g id="node27" class="node">
371
371
  <title>Sessions</title>
372
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M822.75,-54.79C822.75,-56.6 802.69,-58.06 778,-58.06 753.31,-58.06 733.25,-56.6 733.25,-54.79 733.25,-54.79 733.25,-25.34 733.25,-25.34 733.25,-23.53 753.31,-22.06 778,-22.06 802.69,-22.06 822.75,-23.53 822.75,-25.34 822.75,-25.34 822.75,-54.79 822.75,-54.79"/>
373
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M822.75,-54.79C822.75,-52.98 802.69,-51.52 778,-51.52 753.31,-51.52 733.25,-52.98 733.25,-54.79"/>
374
- <text xml:space="preserve" text-anchor="middle" x="778" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">sessions/*.jsonl</text>
372
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M832.75,-54.79C832.75,-56.6 812.69,-58.06 788,-58.06 763.31,-58.06 743.25,-56.6 743.25,-54.79 743.25,-54.79 743.25,-25.34 743.25,-25.34 743.25,-23.53 763.31,-22.06 788,-22.06 812.69,-22.06 832.75,-23.53 832.75,-25.34 832.75,-25.34 832.75,-54.79 832.75,-54.79"/>
373
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M832.75,-54.79C832.75,-52.98 812.69,-51.52 788,-51.52 763.31,-51.52 743.25,-52.98 743.25,-54.79"/>
374
+ <text xml:space="preserve" text-anchor="middle" x="788" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">sessions/*.jsonl</text>
375
375
  </g>
376
376
  <!-- Chain&#45;&gt;Sessions -->
377
377
  <g id="edge25" class="edge">
378
378
  <title>Chain&#45;&gt;Sessions</title>
379
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M683.68,-162.29C702.59,-137.99 736.82,-93.99 758.43,-66.22"/>
380
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="760.52,-68.09 763.22,-60.05 756.1,-64.65 760.52,-68.09"/>
379
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M684.94,-162.29C705.69,-137.89 743.33,-93.62 766.92,-65.86"/>
380
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="768.85,-67.91 771.9,-60 764.59,-64.28 768.85,-67.91"/>
381
381
  </g>
382
382
  <!-- SwarmB -->
383
383
  <g id="node28" class="node">
384
384
  <title>SwarmB</title>
385
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M963.38,-54.79C963.38,-56.6 940.8,-58.06 913,-58.06 885.2,-58.06 862.62,-56.6 862.62,-54.79 862.62,-54.79 862.62,-25.34 862.62,-25.34 862.62,-23.53 885.2,-22.06 913,-22.06 940.8,-22.06 963.38,-23.53 963.38,-25.34 963.38,-25.34 963.38,-54.79 963.38,-54.79"/>
386
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M963.38,-54.79C963.38,-52.98 940.8,-51.52 913,-51.52 885.2,-51.52 862.62,-52.98 862.62,-54.79"/>
387
- <text xml:space="preserve" text-anchor="middle" x="913" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">swarm/*/bus.jsonl</text>
385
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M973.38,-54.79C973.38,-56.6 950.8,-58.06 923,-58.06 895.2,-58.06 872.62,-56.6 872.62,-54.79 872.62,-54.79 872.62,-25.34 872.62,-25.34 872.62,-23.53 895.2,-22.06 923,-22.06 950.8,-22.06 973.38,-23.53 973.38,-25.34 973.38,-25.34 973.38,-54.79 973.38,-54.79"/>
386
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M973.38,-54.79C973.38,-52.98 950.8,-51.52 923,-51.52 895.2,-51.52 872.62,-52.98 872.62,-54.79"/>
387
+ <text xml:space="preserve" text-anchor="middle" x="923" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">swarm/*/bus.jsonl</text>
388
388
  </g>
389
389
  <!-- Bounty&#45;&gt;SwarmB -->
390
390
  <g id="edge26" class="edge">
391
391
  <title>Bounty&#45;&gt;SwarmB</title>
392
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M803.83,-162.29C825.81,-137.89 865.68,-93.62 890.67,-65.86"/>
393
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="892.71,-67.78 895.98,-59.96 888.55,-64.03 892.71,-67.78"/>
392
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M805.1,-162.29C828.94,-137.78 872.26,-93.24 899.23,-65.51"/>
393
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="901.1,-67.6 904.67,-59.91 897.08,-63.69 901.1,-67.6"/>
394
394
  </g>
395
395
  <!-- Reports&#45;&gt;User -->
396
396
  <g id="edge31" class="edge">
397
397
  <title>Reports&#45;&gt;User</title>
398
398
  <path fill="none" stroke="#38bdf8" stroke-width="2" d="M921.09,-199.42C929.26,-214.88 943.47,-236.47 963,-246.62 980.27,-255.6 1123.22,-241.96 1138,-254.62 1186.19,-295.92 1182.83,-344.75 1147,-397.12 967.12,-660.05 764.37,-507.68 456,-587.62 445.5,-590.35 434.48,-593.87 423.99,-597.57"/>
399
399
  <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="423.13,-594.91 416.56,-600.27 425.04,-600.17 423.13,-594.91"/>
400
- <text xml:space="preserve" text-anchor="middle" x="1154.81" y="-407.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
400
+ <text xml:space="preserve" text-anchor="middle" x="1154.81" y="-407.07" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
401
401
  </g>
402
402
  <!-- CronF -->
403
403
  <g id="node29" class="node">
404
404
  <title>CronF</title>
405
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1082.5,-54.79C1082.5,-56.6 1064.8,-58.06 1043,-58.06 1021.2,-58.06 1003.5,-56.6 1003.5,-54.79 1003.5,-54.79 1003.5,-25.34 1003.5,-25.34 1003.5,-23.53 1021.2,-22.06 1043,-22.06 1064.8,-22.06 1082.5,-23.53 1082.5,-25.34 1082.5,-25.34 1082.5,-54.79 1082.5,-54.79"/>
406
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M1082.5,-54.79C1082.5,-52.98 1064.8,-51.52 1043,-51.52 1021.2,-51.52 1003.5,-52.98 1003.5,-54.79"/>
407
- <text xml:space="preserve" text-anchor="middle" x="1043" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">cron/jobs.yml</text>
405
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1092.5,-54.79C1092.5,-56.6 1074.8,-58.06 1053,-58.06 1031.2,-58.06 1013.5,-56.6 1013.5,-54.79 1013.5,-54.79 1013.5,-25.34 1013.5,-25.34 1013.5,-23.53 1031.2,-22.06 1053,-22.06 1074.8,-22.06 1092.5,-23.53 1092.5,-25.34 1092.5,-25.34 1092.5,-54.79 1092.5,-54.79"/>
406
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M1092.5,-54.79C1092.5,-52.98 1074.8,-51.52 1053,-51.52 1031.2,-51.52 1013.5,-52.98 1013.5,-54.79"/>
407
+ <text xml:space="preserve" text-anchor="middle" x="1053" y="-36.36" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">cron/jobs.yml</text>
408
408
  </g>
409
409
  <!-- Reports&#45;&gt;CronF -->
410
410
  <g id="edge27" class="edge">
411
411
  <title>Reports&#45;&gt;CronF</title>
412
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M929.73,-162.21C943.93,-147.18 964.84,-125.03 983,-105.62 995.3,-92.49 1008.96,-77.8 1020.13,-65.75"/>
413
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1022.01,-67.84 1025.4,-60.07 1017.9,-64.04 1022.01,-67.84"/>
412
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M932.78,-162.26C949.2,-147.46 973.03,-125.58 993,-105.62 1005.82,-92.82 1019.62,-78.04 1030.74,-65.86"/>
413
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1032.66,-67.91 1035.97,-60.11 1028.52,-64.15 1032.66,-67.91"/>
414
414
  </g>
415
415
  </g>
416
416
  </svg>