pwn 0.5.668 → 0.5.669
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/CONTRIBUTING.md +15 -0
- data/README.md +4 -4
- data/documentation/AI-Integration.md +5 -3
- data/documentation/Agent-Tool-Registry.md +18 -14
- data/documentation/Configuration.md +2 -0
- data/documentation/Contributing.md +13 -0
- data/documentation/Diagrams.md +1 -1
- data/documentation/Home.md +4 -4
- data/documentation/How-PWN-Works.md +6 -6
- data/documentation/Persistence.md +17 -0
- data/documentation/Reinforcement-Learning.md +39 -39
- data/documentation/SDR.md +1 -1
- data/documentation/Sessions.md +1 -0
- data/documentation/Skills-Memory-Learning.md +2 -0
- data/documentation/What-is-PWN.md +3 -3
- data/documentation/diagrams/agent-tool-registry.svg +43 -43
- data/documentation/diagrams/ai-integration-tool-calling.svg +112 -85
- data/documentation/diagrams/dot/agent-tool-registry.dot +4 -4
- data/documentation/diagrams/dot/ai-integration-tool-calling.dot +7 -3
- data/documentation/diagrams/dot/memory-skills-detailed.dot +2 -2
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +6 -4
- data/documentation/diagrams/dot/persistence-filesystem.dot +1 -1
- data/documentation/diagrams/dot/sdr-radio-flow.dot +1 -1
- data/documentation/diagrams/memory-skills-detailed.svg +182 -182
- data/documentation/diagrams/overall-pwn-architecture.svg +154 -146
- data/documentation/diagrams/persistence-filesystem.svg +6 -6
- data/documentation/diagrams/sdr-radio-flow.svg +1 -1
- data/documentation/pwn-ai-Agent.md +29 -13
- data/lib/pwn/ai/agent/loop.rb +189 -1
- data/lib/pwn/ai/agent/prompt_builder.rb +24 -5
- data/lib/pwn/ai/agent/task_summarizer.rb +40 -3
- data/lib/pwn/ai/agent/tools/shell.rb +32 -0
- data/lib/pwn/memory_index.rb +17 -2
- data/lib/pwn/plugins/repl.rb +36 -7
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/ai/agent/loop_spec.rb +31 -0
- data/spec/lib/pwn/ai/agent/task_summarizer_spec.rb +10 -0
- data/spec/lib/pwn/ai/agent/tools/shell_spec.rb +21 -0
- data/spec/lib/pwn/plugins/repl_pwn_vault_spec.rb +134 -0
- data/third_party/pwn_rdoc.jsonl +5 -0
- metadata +2 -1
|
@@ -4,282 +4,282 @@
|
|
|
4
4
|
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
5
|
-->
|
|
6
6
|
<!-- Title: PWN_Overall_Architecture Pages: 1 -->
|
|
7
|
-
<svg width="
|
|
8
|
-
viewBox="0.00 0.00
|
|
7
|
+
<svg width="1642pt" height="848pt"
|
|
8
|
+
viewBox="0.00 0.00 1642.00 848.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
9
9
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 804.83)">
|
|
10
10
|
<title>PWN_Overall_Architecture</title>
|
|
11
|
-
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-804.83
|
|
12
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
13
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-804.83 1599.2,-804.83 1599.2,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="521.12" y="-737.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="706" y="-726.18" font-family="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
|
-
<path fill="#1e293b" stroke="#334155" stroke-dasharray="5,2" d="
|
|
17
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
16
|
+
<path fill="#1e293b" stroke="#334155" stroke-dasharray="5,2" d="M491,-614.62C491,-614.62 1116,-614.62 1116,-614.62 1122,-614.62 1128,-620.62 1128,-626.62 1128,-626.62 1128,-700.62 1128,-700.62 1128,-706.62 1122,-712.62 1116,-712.62 1116,-712.62 491,-712.62 491,-712.62 485,-712.62 479,-706.62 479,-700.62 479,-700.62 479,-626.62 479,-626.62 479,-620.62 485,-614.62 491,-614.62"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="803.5" y="-687.73" font-family="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
|
-
<path fill="#0c4a6e" stroke="#0369a1" stroke-width="2" d="
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#0c4a6e" stroke="#0369a1" stroke-width="2" d="M357,-476.62C357,-476.62 875,-476.62 875,-476.62 881,-476.62 887,-482.62 887,-488.62 887,-488.62 887,-550.12 887,-550.12 887,-556.12 881,-562.12 875,-562.12 875,-562.12 357,-562.12 357,-562.12 351,-562.12 345,-556.12 345,-550.12 345,-550.12 345,-488.62 345,-488.62 345,-482.62 351,-476.62 357,-476.62"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="616" y="-537.23" font-family="sans-Serif" font-size="22.00" fill="#7dd3fc">Entry Points  (bin/)</text>
|
|
23
23
|
</g>
|
|
24
24
|
<g id="clust5" class="cluster">
|
|
25
25
|
<title>cluster_agent</title>
|
|
26
|
-
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="
|
|
27
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
26
|
+
<path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M334,-299.12C334,-299.12 1022,-299.12 1022,-299.12 1028,-299.12 1034,-305.12 1034,-311.12 1034,-311.12 1034,-412.12 1034,-412.12 1034,-418.12 1028,-424.12 1022,-424.12 1022,-424.12 334,-424.12 334,-424.12 328,-424.12 322,-418.12 322,-412.12 322,-412.12 322,-311.12 322,-311.12 322,-305.12 328,-299.12 334,-299.12"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="678" y="-399.23" font-family="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
|
-
<path fill="#022c22" stroke="#047857" stroke-width="2" d="
|
|
32
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
31
|
+
<path fill="#022c22" stroke="#047857" stroke-width="2" d="M222,-148.62C222,-148.62 1161,-148.62 1161,-148.62 1167,-148.62 1173,-154.62 1173,-160.62 1173,-160.62 1173,-234.62 1173,-234.62 1173,-240.62 1167,-246.62 1161,-246.62 1161,-246.62 222,-246.62 222,-246.62 216,-246.62 210,-240.62 210,-234.62 210,-234.62 210,-160.62 210,-160.62 210,-154.62 216,-148.62 222,-148.62"/>
|
|
32
|
+
<text xml:space="preserve" text-anchor="middle" x="691.5" y="-221.72" font-family="sans-Serif" font-size="22.00" fill="#a7f3d0">Capability Namespaces  (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
|
|
37
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
36
|
+
<path fill="#422006" stroke="#a16207" stroke-width="2" d="M20,-8C20,-8 1536,-8 1536,-8 1542,-8 1548,-14 1548,-20 1548,-20 1548,-93.62 1548,-93.62 1548,-99.62 1542,-105.62 1536,-105.62 1536,-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="778" y="-80.72" font-family="sans-Serif" font-size="22.00" fill="#fde68a">Persistence  ~/.pwn/</text>
|
|
38
38
|
</g>
|
|
39
39
|
<!-- User -->
|
|
40
40
|
<g id="node1" class="node">
|
|
41
41
|
<title>User</title>
|
|
42
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
43
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
44
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
42
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M605,-664.88C605,-664.88 499,-664.88 499,-664.88 493,-664.88 487,-658.88 487,-652.88 487,-652.88 487,-640.88 487,-640.88 487,-634.88 493,-628.88 499,-628.88 499,-628.88 605,-628.88 605,-628.88 611,-628.88 617,-634.88 617,-640.88 617,-640.88 617,-652.88 617,-652.88 617,-658.88 611,-664.88 605,-664.88"/>
|
|
43
|
+
<text xml:space="preserve" text-anchor="middle" x="552" y="-649.92" font-family="sans-Serif" font-size="11.00" fill="#0f172a">👤  Researcher</text>
|
|
44
|
+
<text xml:space="preserve" text-anchor="middle" x="552" y="-636.42" font-family="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
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
50
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
51
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
49
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M457.25,-520.62C457.25,-520.62 364.75,-520.62 364.75,-520.62 358.75,-520.62 352.75,-514.62 352.75,-508.62 352.75,-508.62 352.75,-496.62 352.75,-496.62 352.75,-490.62 358.75,-484.62 364.75,-484.62 364.75,-484.62 457.25,-484.62 457.25,-484.62 463.25,-484.62 469.25,-490.62 469.25,-496.62 469.25,-496.62 469.25,-508.62 469.25,-508.62 469.25,-514.62 463.25,-520.62 457.25,-520.62"/>
|
|
50
|
+
<text xml:space="preserve" text-anchor="middle" x="411" y="-505.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🐚  pwn REPL</text>
|
|
51
|
+
<text xml:space="preserve" text-anchor="middle" x="411" y="-492.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Pry + PWN:: preload</text>
|
|
52
52
|
</g>
|
|
53
53
|
<!-- User->REPL -->
|
|
54
54
|
<g id="edge1" class="edge">
|
|
55
55
|
<title>User->REPL</title>
|
|
56
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
57
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
56
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M534.71,-628.43C509.76,-603.26 463.56,-556.65 435.23,-528.07"/>
|
|
57
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="437.44,-526.32 429.82,-522.61 433.46,-530.26 437.44,-526.32"/>
|
|
58
58
|
</g>
|
|
59
59
|
<!-- PwnAI -->
|
|
60
60
|
<g id="node6" class="node">
|
|
61
61
|
<title>PwnAI</title>
|
|
62
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
63
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
64
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
62
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M610.75,-520.62C610.75,-520.62 521.25,-520.62 521.25,-520.62 515.25,-520.62 509.25,-514.62 509.25,-508.62 509.25,-508.62 509.25,-496.62 509.25,-496.62 509.25,-490.62 515.25,-484.62 521.25,-484.62 521.25,-484.62 610.75,-484.62 610.75,-484.62 616.75,-484.62 622.75,-490.62 622.75,-496.62 622.75,-496.62 622.75,-508.62 622.75,-508.62 622.75,-514.62 616.75,-520.62 610.75,-520.62"/>
|
|
63
|
+
<text xml:space="preserve" text-anchor="middle" x="566" y="-505.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">✨  pwn-ai</text>
|
|
64
|
+
<text xml:space="preserve" text-anchor="middle" x="566" y="-492.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Agent TUI · pwn --ai</text>
|
|
65
65
|
</g>
|
|
66
66
|
<!-- User->PwnAI -->
|
|
67
67
|
<g id="edge2" class="edge">
|
|
68
68
|
<title>User->PwnAI</title>
|
|
69
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
70
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
69
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M553.72,-628.43C556.11,-604.12 560.47,-559.79 563.3,-531.03"/>
|
|
70
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="566.08,-531.4 564.08,-523.17 560.51,-530.86 566.08,-531.4"/>
|
|
71
71
|
</g>
|
|
72
72
|
<!-- CI -->
|
|
73
73
|
<g id="node2" class="node">
|
|
74
74
|
<title>CI</title>
|
|
75
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
76
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
77
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
75
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M751,-664.88C751,-664.88 669,-664.88 669,-664.88 663,-664.88 657,-658.88 657,-652.88 657,-652.88 657,-640.88 657,-640.88 657,-634.88 663,-628.88 669,-628.88 669,-628.88 751,-628.88 751,-628.88 757,-628.88 763,-634.88 763,-640.88 763,-640.88 763,-652.88 763,-652.88 763,-658.88 757,-664.88 751,-664.88"/>
|
|
76
|
+
<text xml:space="preserve" text-anchor="middle" x="710" y="-649.92" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⚙️  CI / CD</text>
|
|
77
|
+
<text xml:space="preserve" text-anchor="middle" x="710" y="-636.42" font-family="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
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
83
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
84
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
82
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M734.75,-520.62C734.75,-520.62 675.25,-520.62 675.25,-520.62 669.25,-520.62 663.25,-514.62 663.25,-508.62 663.25,-508.62 663.25,-496.62 663.25,-496.62 663.25,-490.62 669.25,-484.62 675.25,-484.62 675.25,-484.62 734.75,-484.62 734.75,-484.62 740.75,-484.62 746.75,-490.62 746.75,-496.62 746.75,-496.62 746.75,-508.62 746.75,-508.62 746.75,-514.62 740.75,-520.62 734.75,-520.62"/>
|
|
83
|
+
<text xml:space="preserve" text-anchor="middle" x="705" y="-505.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">📜  bin/pwn_*</text>
|
|
84
|
+
<text xml:space="preserve" text-anchor="middle" x="705" y="-492.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">53 CLI drivers</text>
|
|
85
85
|
</g>
|
|
86
86
|
<!-- CI->CLI -->
|
|
87
87
|
<g id="edge3" class="edge">
|
|
88
88
|
<title>CI->CLI</title>
|
|
89
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
90
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
89
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M709.39,-628.43C708.53,-604.12 706.97,-559.79 705.96,-531.03"/>
|
|
90
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="708.77,-531.07 705.69,-523.18 703.17,-531.27 708.77,-531.07"/>
|
|
91
91
|
</g>
|
|
92
92
|
<!-- Cronb -->
|
|
93
93
|
<g id="node8" class="node">
|
|
94
94
|
<title>Cronb</title>
|
|
95
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="
|
|
96
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
97
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
95
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M866.88,-520.62C866.88,-520.62 799.12,-520.62 799.12,-520.62 793.12,-520.62 787.12,-514.62 787.12,-508.62 787.12,-508.62 787.12,-496.62 787.12,-496.62 787.12,-490.62 793.12,-484.62 799.12,-484.62 799.12,-484.62 866.88,-484.62 866.88,-484.62 872.88,-484.62 878.88,-490.62 878.88,-496.62 878.88,-496.62 878.88,-508.62 878.88,-508.62 878.88,-514.62 872.88,-520.62 866.88,-520.62"/>
|
|
96
|
+
<text xml:space="preserve" text-anchor="middle" x="833" y="-505.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⏱  PWN::Cron</text>
|
|
97
|
+
<text xml:space="preserve" text-anchor="middle" x="833" y="-492.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Scheduled jobs</text>
|
|
98
98
|
</g>
|
|
99
99
|
<!-- CI->Cronb -->
|
|
100
100
|
<g id="edge4" class="edge">
|
|
101
101
|
<title>CI->Cronb</title>
|
|
102
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
103
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
104
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
102
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M725.08,-628.43C746.75,-603.37 786.81,-557.05 811.55,-528.43"/>
|
|
103
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="813.39,-530.58 816.51,-522.7 809.16,-526.92 813.39,-530.58"/>
|
|
104
|
+
<text xml:space="preserve" text-anchor="middle" x="790.56" y="-572.08" font-family="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
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
110
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
111
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
112
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
109
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M955.25,-671.12C955.25,-671.12 814.75,-671.12 814.75,-671.12 808.75,-671.12 802.75,-665.12 802.75,-659.12 802.75,-659.12 802.75,-634.62 802.75,-634.62 802.75,-628.62 808.75,-622.62 814.75,-622.62 814.75,-622.62 955.25,-622.62 955.25,-622.62 961.25,-622.62 967.25,-628.62 967.25,-634.62 967.25,-634.62 967.25,-659.12 967.25,-659.12 967.25,-665.12 961.25,-671.12 955.25,-671.12"/>
|
|
110
|
+
<text xml:space="preserve" text-anchor="middle" x="885" y="-656.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🤖  LLM Providers</text>
|
|
111
|
+
<text xml:space="preserve" text-anchor="middle" x="885" y="-643.17" font-family="sans-Serif" font-size="11.00" fill="#0f172a">OpenAI · Anthropic · Grok</text>
|
|
112
|
+
<text xml:space="preserve" text-anchor="middle" x="885" y="-629.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Gemini · Ollama · Open WebUI</text>
|
|
113
113
|
</g>
|
|
114
114
|
<!-- Target -->
|
|
115
115
|
<g id="node4" class="node">
|
|
116
116
|
<title>Target</title>
|
|
117
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="
|
|
118
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
119
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
120
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
117
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M1108.38,-671.12C1108.38,-671.12 1019.62,-671.12 1019.62,-671.12 1013.62,-671.12 1007.62,-665.12 1007.62,-659.12 1007.62,-659.12 1007.62,-634.62 1007.62,-634.62 1007.62,-628.62 1013.62,-622.62 1019.62,-622.62 1019.62,-622.62 1108.38,-622.62 1108.38,-622.62 1114.38,-622.62 1120.38,-628.62 1120.38,-634.62 1120.38,-634.62 1120.38,-659.12 1120.38,-659.12 1120.38,-665.12 1114.38,-671.12 1108.38,-671.12"/>
|
|
118
|
+
<text xml:space="preserve" text-anchor="middle" x="1064" y="-656.67" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🎯  Attack Surface</text>
|
|
119
|
+
<text xml:space="preserve" text-anchor="middle" x="1064" y="-643.17" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Hosts · Web · Cloud</text>
|
|
120
|
+
<text xml:space="preserve" text-anchor="middle" x="1064" y="-629.67" font-family="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
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
126
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
127
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
128
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
129
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
130
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
125
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M443.75,-382.62C443.75,-382.62 342.25,-382.62 342.25,-382.62 336.25,-382.62 330.25,-376.62 330.25,-370.62 330.25,-370.62 330.25,-319.12 330.25,-319.12 330.25,-313.12 336.25,-307.12 342.25,-307.12 342.25,-307.12 443.75,-307.12 443.75,-307.12 449.75,-307.12 455.75,-313.12 455.75,-319.12 455.75,-319.12 455.75,-370.62 455.75,-370.62 455.75,-376.62 449.75,-382.62 443.75,-382.62"/>
|
|
126
|
+
<text xml:space="preserve" text-anchor="middle" x="393" y="-368.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Loop</text>
|
|
127
|
+
<text xml:space="preserve" text-anchor="middle" x="393" y="-354.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">TaskSummarizer briefs</text>
|
|
128
|
+
<text xml:space="preserve" text-anchor="middle" x="393" y="-341.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">plan_first → dispatch</text>
|
|
129
|
+
<text xml:space="preserve" text-anchor="middle" x="393" y="-327.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ observe → escalate</text>
|
|
130
|
+
<text xml:space="preserve" text-anchor="middle" x="393" y="-314.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">budget-pressure caps</text>
|
|
131
131
|
</g>
|
|
132
132
|
<!-- REPL->Loop -->
|
|
133
133
|
<g id="edge5" class="edge">
|
|
134
134
|
<title>REPL->Loop</title>
|
|
135
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
136
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
135
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M408.97,-484.06C406.43,-462.09 401.99,-423.63 398.43,-392.85"/>
|
|
136
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="401.24,-392.74 397.54,-385.12 395.67,-393.38 401.24,-392.74"/>
|
|
137
137
|
</g>
|
|
138
138
|
<!-- PwnAI->Loop -->
|
|
139
139
|
<g id="edge6" class="edge">
|
|
140
140
|
<title>PwnAI->Loop</title>
|
|
141
|
-
<path fill="none" stroke="#a78bfa" stroke-width="2" d="
|
|
142
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="
|
|
143
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
141
|
+
<path fill="none" stroke="#a78bfa" stroke-width="2" d="M540.02,-484.06C524,-472.84 503.34,-457.62 486.25,-442.62 468.17,-426.75 449.52,-407.97 433.7,-391.2"/>
|
|
142
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="435.75,-389.29 428.24,-385.36 431.66,-393.11 435.75,-389.29"/>
|
|
143
|
+
<text xml:space="preserve" text-anchor="middle" x="521.12" y="-434.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">natural language</text>
|
|
144
144
|
</g>
|
|
145
145
|
<!-- Registry -->
|
|
146
146
|
<g id="node10" class="node">
|
|
147
147
|
<title>Registry</title>
|
|
148
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
149
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
150
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
151
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
148
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M623.88,-369.12C623.88,-369.12 508.12,-369.12 508.12,-369.12 502.12,-369.12 496.12,-363.12 496.12,-357.12 496.12,-357.12 496.12,-332.62 496.12,-332.62 496.12,-326.62 502.12,-320.62 508.12,-320.62 508.12,-320.62 623.88,-320.62 623.88,-320.62 629.88,-320.62 635.88,-326.62 635.88,-332.62 635.88,-332.62 635.88,-357.12 635.88,-357.12 635.88,-363.12 629.88,-369.12 623.88,-369.12"/>
|
|
149
|
+
<text xml:space="preserve" text-anchor="middle" x="566" y="-354.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Registry</text>
|
|
150
|
+
<text xml:space="preserve" text-anchor="middle" x="566" y="-341.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">12 toolsets · 82 tools</text>
|
|
151
|
+
<text xml:space="preserve" text-anchor="middle" x="566" y="-327.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">tool_router (CORE+topK)</text>
|
|
152
152
|
</g>
|
|
153
153
|
<!-- PwnAI->Registry -->
|
|
154
154
|
<g id="edge7" class="edge">
|
|
155
155
|
<title>PwnAI->Registry</title>
|
|
156
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
157
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
156
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M566,-484.06C566,-458.79 566,-411.69 566,-379.58"/>
|
|
157
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="568.8,-379.69 566,-371.69 563.2,-379.69 568.8,-379.69"/>
|
|
158
158
|
</g>
|
|
159
159
|
<!-- Swarm -->
|
|
160
160
|
<g id="node11" class="node">
|
|
161
161
|
<title>Swarm</title>
|
|
162
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
163
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
164
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
162
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M792.25,-362.88C792.25,-362.88 687.75,-362.88 687.75,-362.88 681.75,-362.88 675.75,-356.88 675.75,-350.88 675.75,-350.88 675.75,-338.88 675.75,-338.88 675.75,-332.88 681.75,-326.88 687.75,-326.88 687.75,-326.88 792.25,-326.88 792.25,-326.88 798.25,-326.88 804.25,-332.88 804.25,-338.88 804.25,-338.88 804.25,-350.88 804.25,-350.88 804.25,-356.88 798.25,-362.88 792.25,-362.88"/>
|
|
163
|
+
<text xml:space="preserve" text-anchor="middle" x="740" y="-347.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Swarm</text>
|
|
164
|
+
<text xml:space="preserve" text-anchor="middle" x="740" y="-334.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">personas · debate · bus</text>
|
|
165
165
|
</g>
|
|
166
166
|
<!-- CLI->Swarm -->
|
|
167
167
|
<!-- Plugins -->
|
|
168
168
|
<g id="node13" class="node">
|
|
169
169
|
<title>Plugins</title>
|
|
170
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
171
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
172
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
170
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M277.75,-198.88C277.75,-198.88 230.25,-198.88 230.25,-198.88 224.25,-198.88 218.25,-192.88 218.25,-186.88 218.25,-186.88 218.25,-174.88 218.25,-174.88 218.25,-168.88 224.25,-162.88 230.25,-162.88 230.25,-162.88 277.75,-162.88 277.75,-162.88 283.75,-162.88 289.75,-168.88 289.75,-174.88 289.75,-174.88 289.75,-186.88 289.75,-186.88 289.75,-192.88 283.75,-198.88 277.75,-198.88"/>
|
|
171
|
+
<text xml:space="preserve" text-anchor="middle" x="254" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Plugins</text>
|
|
172
|
+
<text xml:space="preserve" text-anchor="middle" x="254" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">66 modules</text>
|
|
173
173
|
</g>
|
|
174
174
|
<!-- CLI->Plugins -->
|
|
175
175
|
<g id="edge18" class="edge">
|
|
176
176
|
<title>CLI->Plugins</title>
|
|
177
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
178
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
177
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M745.64,-483.98C752.68,-481.29 759.99,-478.71 767,-476.62 864.27,-447.63 891.01,-449.59 991,-432.12 1002.73,-430.08 1036.23,-433.15 1044,-424.12 1080.23,-382.01 1081.86,-339.79 1044,-299.12 1030.07,-284.16 328.27,-255.78 310,-246.62 292.78,-238 278.65,-221.52 268.89,-207.34"/>
|
|
178
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="271.45,-206.15 264.73,-200.99 266.77,-209.21 271.45,-206.15"/>
|
|
179
179
|
</g>
|
|
180
180
|
<!-- Prompt -->
|
|
181
181
|
<g id="node12" class="node">
|
|
182
182
|
<title>Prompt</title>
|
|
183
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="
|
|
184
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
185
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
186
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
183
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1013.88,-369.12C1013.88,-369.12 856.12,-369.12 856.12,-369.12 850.12,-369.12 844.12,-363.12 844.12,-357.12 844.12,-357.12 844.12,-332.62 844.12,-332.62 844.12,-326.62 850.12,-320.62 856.12,-320.62 856.12,-320.62 1013.88,-320.62 1013.88,-320.62 1019.88,-320.62 1025.88,-326.62 1025.88,-332.62 1025.88,-332.62 1025.88,-357.12 1025.88,-357.12 1025.88,-363.12 1019.88,-369.12 1013.88,-369.12"/>
|
|
184
|
+
<text xml:space="preserve" text-anchor="middle" x="935" y="-354.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
|
|
185
|
+
<text xml:space="preserve" text-anchor="middle" x="935" y="-341.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine-budgeted blocks</text>
|
|
186
|
+
<text xml:space="preserve" text-anchor="middle" x="935" y="-327.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">MemoryIndex → relevance-ranked</text>
|
|
187
187
|
</g>
|
|
188
188
|
<!-- Cronb->Prompt -->
|
|
189
189
|
<!-- Loop->LLM -->
|
|
190
|
-
<g id="
|
|
190
|
+
<g id="edge29" class="edge">
|
|
191
191
|
<title>Loop->LLM</title>
|
|
192
|
-
<path fill="none" stroke="#c4b5fd" stroke-width="2" d="
|
|
193
|
-
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="2" points="
|
|
194
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
192
|
+
<path fill="none" stroke="#c4b5fd" stroke-width="2" d="M422.65,-383.26C437.02,-398.63 455.59,-414.95 476,-424.12 494.31,-432.35 546.05,-429.9 566,-432.12 639.76,-440.36 848.14,-420.76 897,-476.62 929.35,-513.61 914.44,-574.26 900.13,-612.03"/>
|
|
193
|
+
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="2" points="897.63,-610.76 897.27,-619.23 902.83,-612.83 897.63,-610.76"/>
|
|
194
|
+
<text xml:space="preserve" text-anchor="middle" x="941.08" y="-499.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tool-use API</text>
|
|
195
195
|
</g>
|
|
196
196
|
<!-- Loop->Plugins -->
|
|
197
197
|
<g id="edge10" class="edge">
|
|
198
198
|
<title>Loop->Plugins</title>
|
|
199
|
-
<path fill="none" stroke="#34d399" stroke-width="2" d="
|
|
200
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="2" points="
|
|
201
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
199
|
+
<path fill="none" stroke="#34d399" stroke-width="2" d="M360.35,-306.73C348.89,-293.63 335.95,-278.76 324.25,-265.12 307.78,-245.94 289.36,-224.09 275.51,-207.59"/>
|
|
200
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="2" points="277.95,-206.14 270.66,-201.81 273.66,-209.74 277.95,-206.14"/>
|
|
201
|
+
<text xml:space="preserve" text-anchor="middle" x="344.12" y="-256.57" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">pwn_eval</text>
|
|
202
202
|
</g>
|
|
203
203
|
<!-- SAST -->
|
|
204
204
|
<g id="node14" class="node">
|
|
205
205
|
<title>SAST</title>
|
|
206
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
207
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
208
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
206
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M372.12,-198.88C372.12,-198.88 341.88,-198.88 341.88,-198.88 335.88,-198.88 329.88,-192.88 329.88,-186.88 329.88,-186.88 329.88,-174.88 329.88,-174.88 329.88,-168.88 335.88,-162.88 341.88,-162.88 341.88,-162.88 372.12,-162.88 372.12,-162.88 378.12,-162.88 384.12,-168.88 384.12,-174.88 384.12,-174.88 384.12,-186.88 384.12,-186.88 384.12,-192.88 378.12,-198.88 372.12,-198.88"/>
|
|
207
|
+
<text xml:space="preserve" text-anchor="middle" x="357" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">SAST</text>
|
|
208
|
+
<text xml:space="preserve" text-anchor="middle" x="357" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">48 rules</text>
|
|
209
209
|
</g>
|
|
210
210
|
<!-- Loop->SAST -->
|
|
211
211
|
<g id="edge11" class="edge">
|
|
212
212
|
<title>Loop->SAST</title>
|
|
213
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
214
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
213
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M384.74,-306.71C378.11,-276.89 368.97,-235.73 363.02,-208.96"/>
|
|
214
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="365.8,-208.58 361.33,-201.38 360.34,-209.8 365.8,-208.58"/>
|
|
215
215
|
</g>
|
|
216
216
|
<!-- WWW -->
|
|
217
217
|
<g id="node15" class="node">
|
|
218
218
|
<title>WWW</title>
|
|
219
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
220
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
221
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
219
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M495.38,-198.88C495.38,-198.88 436.62,-198.88 436.62,-198.88 430.62,-198.88 424.62,-192.88 424.62,-186.88 424.62,-186.88 424.62,-174.88 424.62,-174.88 424.62,-168.88 430.62,-162.88 436.62,-162.88 436.62,-162.88 495.38,-162.88 495.38,-162.88 501.38,-162.88 507.38,-168.88 507.38,-174.88 507.38,-174.88 507.38,-186.88 507.38,-186.88 507.38,-192.88 501.38,-198.88 495.38,-198.88"/>
|
|
220
|
+
<text xml:space="preserve" text-anchor="middle" x="466" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">WWW</text>
|
|
221
|
+
<text xml:space="preserve" text-anchor="middle" x="466" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">21 site drivers</text>
|
|
222
222
|
</g>
|
|
223
223
|
<!-- Registry->WWW -->
|
|
224
224
|
<g id="edge12" class="edge">
|
|
225
225
|
<title>Registry->WWW</title>
|
|
226
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
227
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
226
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M551.24,-319.97C532.67,-289.88 500.9,-238.41 481.83,-207.52"/>
|
|
227
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="484.43,-206.4 477.85,-201.06 479.66,-209.34 484.43,-206.4"/>
|
|
228
228
|
</g>
|
|
229
229
|
<!-- AWS -->
|
|
230
230
|
<g id="node16" class="node">
|
|
231
231
|
<title>AWS</title>
|
|
232
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
233
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
234
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
232
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M605,-198.88C605,-198.88 559,-198.88 559,-198.88 553,-198.88 547,-192.88 547,-186.88 547,-186.88 547,-174.88 547,-174.88 547,-168.88 553,-162.88 559,-162.88 559,-162.88 605,-162.88 605,-162.88 611,-162.88 617,-168.88 617,-174.88 617,-174.88 617,-186.88 617,-186.88 617,-192.88 611,-198.88 605,-198.88"/>
|
|
233
|
+
<text xml:space="preserve" text-anchor="middle" x="582" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">AWS</text>
|
|
234
|
+
<text xml:space="preserve" text-anchor="middle" x="582" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">90 services</text>
|
|
235
235
|
</g>
|
|
236
236
|
<!-- Registry->AWS -->
|
|
237
237
|
<g id="edge13" class="edge">
|
|
238
238
|
<title>Registry->AWS</title>
|
|
239
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
240
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
239
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M568.36,-319.97C571.28,-290.4 576.24,-240.16 579.31,-209.12"/>
|
|
240
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="582.08,-209.58 580.08,-201.35 576.5,-209.03 582.08,-209.58"/>
|
|
241
241
|
</g>
|
|
242
242
|
<!-- SDR -->
|
|
243
243
|
<g id="node17" class="node">
|
|
244
244
|
<title>SDR</title>
|
|
245
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
246
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
247
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
248
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
245
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M793,-205.12C793,-205.12 669,-205.12 669,-205.12 663,-205.12 657,-199.12 657,-193.12 657,-193.12 657,-168.62 657,-168.62 657,-162.62 663,-156.62 669,-156.62 669,-156.62 793,-156.62 793,-156.62 799,-156.62 805,-162.62 805,-168.62 805,-168.62 805,-193.12 805,-193.12 805,-199.12 799,-205.12 793,-205.12"/>
|
|
246
|
+
<text xml:space="preserve" text-anchor="middle" x="731" y="-190.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">SDR</text>
|
|
247
|
+
<text xml:space="preserve" text-anchor="middle" x="731" y="-177.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">GQRX · Flipper · RFID</text>
|
|
248
|
+
<text xml:space="preserve" text-anchor="middle" x="731" y="-163.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Decoder::* (20+Base/DSP)</text>
|
|
249
249
|
</g>
|
|
250
250
|
<!-- Swarm->SDR -->
|
|
251
251
|
<g id="edge14" class="edge">
|
|
252
252
|
<title>Swarm->SDR</title>
|
|
253
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
254
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
253
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M739.02,-326.23C737.55,-299.77 734.75,-249.34 732.88,-215.65"/>
|
|
254
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="735.68,-215.58 732.44,-207.75 730.09,-215.89 735.68,-215.58"/>
|
|
255
255
|
</g>
|
|
256
256
|
<!-- Chain -->
|
|
257
257
|
<g id="node18" class="node">
|
|
258
258
|
<title>Chain</title>
|
|
259
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
260
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
261
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
259
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M903,-198.88C903,-198.88 857,-198.88 857,-198.88 851,-198.88 845,-192.88 845,-186.88 845,-186.88 845,-174.88 845,-174.88 845,-168.88 851,-162.88 857,-162.88 857,-162.88 903,-162.88 903,-162.88 909,-162.88 915,-168.88 915,-174.88 915,-174.88 915,-186.88 915,-186.88 915,-192.88 909,-198.88 903,-198.88"/>
|
|
260
|
+
<text xml:space="preserve" text-anchor="middle" x="880" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Blockchain</text>
|
|
261
|
+
<text xml:space="preserve" text-anchor="middle" x="880" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">BTC · ETH</text>
|
|
262
262
|
</g>
|
|
263
263
|
<!-- Swarm->Chain -->
|
|
264
264
|
<g id="edge15" class="edge">
|
|
265
265
|
<title>Swarm->Chain</title>
|
|
266
|
-
<path fill="none" stroke="#34d399" stroke-width="1.3" d="
|
|
267
|
-
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="
|
|
266
|
+
<path fill="none" stroke="#34d399" stroke-width="1.3" d="M755.43,-326.37C772.52,-306.95 800.85,-274.65 825,-246.62 836.21,-233.61 848.61,-219.03 858.79,-207.01"/>
|
|
267
|
+
<polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="860.83,-208.94 863.86,-201.02 856.55,-205.32 860.83,-208.94"/>
|
|
268
268
|
</g>
|
|
269
269
|
<!-- Bounty -->
|
|
270
270
|
<g id="node19" class="node">
|
|
271
271
|
<title>Bounty</title>
|
|
272
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
273
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
274
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
272
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M1028.88,-198.88C1028.88,-198.88 967.12,-198.88 967.12,-198.88 961.12,-198.88 955.12,-192.88 955.12,-186.88 955.12,-186.88 955.12,-174.88 955.12,-174.88 955.12,-168.88 961.12,-162.88 967.12,-162.88 967.12,-162.88 1028.88,-162.88 1028.88,-162.88 1034.88,-162.88 1040.88,-168.88 1040.88,-174.88 1040.88,-174.88 1040.88,-186.88 1040.88,-186.88 1040.88,-192.88 1034.88,-198.88 1028.88,-198.88"/>
|
|
273
|
+
<text xml:space="preserve" text-anchor="middle" x="998" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Bounty</text>
|
|
274
|
+
<text xml:space="preserve" text-anchor="middle" x="998" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">lifecycle replay</text>
|
|
275
275
|
</g>
|
|
276
276
|
<!-- Prompt->Bounty -->
|
|
277
277
|
<!-- Reports -->
|
|
278
278
|
<g id="node20" class="node">
|
|
279
279
|
<title>Reports</title>
|
|
280
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="
|
|
281
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
282
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
280
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M1153.12,-198.88C1153.12,-198.88 1092.88,-198.88 1092.88,-198.88 1086.88,-198.88 1080.88,-192.88 1080.88,-186.88 1080.88,-186.88 1080.88,-174.88 1080.88,-174.88 1080.88,-168.88 1086.88,-162.88 1092.88,-162.88 1092.88,-162.88 1153.12,-162.88 1153.12,-162.88 1159.12,-162.88 1165.12,-168.88 1165.12,-174.88 1165.12,-174.88 1165.12,-186.88 1165.12,-186.88 1165.12,-192.88 1159.12,-198.88 1153.12,-198.88"/>
|
|
281
|
+
<text xml:space="preserve" text-anchor="middle" x="1123" y="-183.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Reports</text>
|
|
282
|
+
<text xml:space="preserve" text-anchor="middle" x="1123" y="-170.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HTML · JSON</text>
|
|
283
283
|
</g>
|
|
284
284
|
<!-- Prompt->Reports -->
|
|
285
285
|
<!-- Memory -->
|
|
@@ -290,24 +290,24 @@
|
|
|
290
290
|
<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>
|
|
291
291
|
</g>
|
|
292
292
|
<!-- Prompt->Memory -->
|
|
293
|
-
<g id="
|
|
293
|
+
<g id="edge31" class="edge">
|
|
294
294
|
<title>Prompt->Memory</title>
|
|
295
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
296
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
297
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
295
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1035.99,-331.47C1089.18,-319.24 1150.06,-294.92 1183,-246.62 1207.54,-210.64 1213.17,-180.04 1183,-148.62 1141.83,-105.76 167.89,-130.69 114,-105.62 92.66,-95.7 75.53,-74.13 65.34,-58.65"/>
|
|
296
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="1035.64,-328.68 1028.42,-333.13 1036.83,-334.15 1035.64,-328.68"/>
|
|
297
|
+
<text xml:space="preserve" text-anchor="middle" x="1214.45" y="-177.57" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
|
|
298
298
|
</g>
|
|
299
299
|
<!-- Plugins->Target -->
|
|
300
|
-
<g id="
|
|
300
|
+
<g id="edge30" class="edge">
|
|
301
301
|
<title>Plugins->Target</title>
|
|
302
|
-
<path fill="none" stroke="#fb7185" stroke-width="2" d="
|
|
303
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="
|
|
304
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
302
|
+
<path fill="none" stroke="#fb7185" stroke-width="2" d="M263.58,-199.5C273.09,-215.01 289.24,-236.64 310,-246.62 330.74,-256.6 494.02,-253.29 517,-254.62 580.64,-258.33 1045.71,-252.33 1089,-299.12 1169.51,-386.14 1111.76,-543.76 1080.52,-612.41"/>
|
|
303
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="1078.05,-611.08 1077.21,-619.51 1083.13,-613.44 1078.05,-611.08"/>
|
|
304
|
+
<text xml:space="preserve" text-anchor="middle" x="1141.46" y="-434.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">attack</text>
|
|
305
305
|
</g>
|
|
306
306
|
<!-- Plugins->Memory -->
|
|
307
307
|
<g id="edge19" class="edge">
|
|
308
308
|
<title>Plugins->Memory</title>
|
|
309
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
310
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
309
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M217.76,-164.83C188.24,-151.62 146.3,-130.64 114,-105.62 99.29,-94.23 85.14,-78.95 74.39,-66.11"/>
|
|
310
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="76.63,-64.44 69.4,-60.02 72.3,-67.98 76.63,-64.44"/>
|
|
311
311
|
</g>
|
|
312
312
|
<!-- Skills -->
|
|
313
313
|
<g id="node23" class="node">
|
|
@@ -319,8 +319,8 @@
|
|
|
319
319
|
<!-- SAST->Skills -->
|
|
320
320
|
<g id="edge20" class="edge">
|
|
321
321
|
<title>SAST->Skills</title>
|
|
322
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
323
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
322
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M351.68,-162.29C344.49,-138.51 331.58,-95.87 323.16,-68.03"/>
|
|
323
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="325.84,-67.23 320.85,-60.38 320.48,-68.85 325.84,-67.23"/>
|
|
324
324
|
</g>
|
|
325
325
|
<!-- Learn -->
|
|
326
326
|
<g id="node24" class="node">
|
|
@@ -332,8 +332,8 @@
|
|
|
332
332
|
<!-- WWW->Learn -->
|
|
333
333
|
<g id="edge21" class="edge">
|
|
334
334
|
<title>WWW->Learn</title>
|
|
335
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
336
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
335
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M464.1,-162.29C461.54,-138.62 456.96,-96.25 453.95,-68.4"/>
|
|
336
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="456.74,-68.11 453.1,-60.46 451.17,-68.71 456.74,-68.11"/>
|
|
337
337
|
</g>
|
|
338
338
|
<!-- Metrics -->
|
|
339
339
|
<g id="node25" class="node">
|
|
@@ -345,8 +345,8 @@
|
|
|
345
345
|
<!-- AWS->Metrics -->
|
|
346
346
|
<g id="edge22" class="edge">
|
|
347
347
|
<title>AWS->Metrics</title>
|
|
348
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
349
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
348
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M580.1,-162.29C577.54,-138.62 572.96,-96.25 569.95,-68.4"/>
|
|
349
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="572.74,-68.11 569.1,-60.46 567.17,-68.71 572.74,-68.11"/>
|
|
350
350
|
</g>
|
|
351
351
|
<!-- MistF -->
|
|
352
352
|
<g id="node26" class="node">
|
|
@@ -367,8 +367,8 @@
|
|
|
367
367
|
<!-- SDR->Extro -->
|
|
368
368
|
<g id="edge24" class="edge">
|
|
369
369
|
<title>SDR->Extro</title>
|
|
370
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
371
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
370
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M747.16,-156.01C762.72,-133.03 786.36,-98.12 803.51,-72.8"/>
|
|
371
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="805.78,-74.44 807.95,-66.24 801.14,-71.3 805.78,-74.44"/>
|
|
372
372
|
</g>
|
|
373
373
|
<!-- Sessions -->
|
|
374
374
|
<g id="node28" class="node">
|
|
@@ -380,8 +380,8 @@
|
|
|
380
380
|
<!-- Chain->Sessions -->
|
|
381
381
|
<g id="edge25" class="edge">
|
|
382
382
|
<title>Chain->Sessions</title>
|
|
383
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
384
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
383
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M891.53,-162.29C907.39,-138.1 936.05,-94.37 954.27,-66.58"/>
|
|
384
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="956.45,-68.37 958.49,-60.15 951.76,-65.3 956.45,-68.37"/>
|
|
385
385
|
</g>
|
|
386
386
|
<!-- SwarmB -->
|
|
387
387
|
<g id="node29" class="node">
|
|
@@ -393,15 +393,15 @@
|
|
|
393
393
|
<!-- Bounty->SwarmB -->
|
|
394
394
|
<g id="edge26" class="edge">
|
|
395
395
|
<title>Bounty->SwarmB</title>
|
|
396
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
397
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
396
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M1011.68,-162.29C1030.59,-137.99 1064.82,-93.99 1086.43,-66.22"/>
|
|
397
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1088.52,-68.09 1091.22,-60.05 1084.1,-64.65 1088.52,-68.09"/>
|
|
398
398
|
</g>
|
|
399
399
|
<!-- Reports->User -->
|
|
400
|
-
<g id="
|
|
400
|
+
<g id="edge32" class="edge">
|
|
401
401
|
<title>Reports->User</title>
|
|
402
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="
|
|
403
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
404
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
402
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M1135.12,-199.35C1144.77,-212.8 1158.95,-231.57 1173,-246.62 1176.65,-250.54 1178.92,-250.25 1182,-254.62 1225.66,-316.53 1236.94,-357.98 1200,-424.12 1071.2,-654.76 892.75,-548.51 637,-614.62 626.5,-617.34 615.48,-620.86 604.99,-624.56"/>
|
|
403
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="604.12,-621.89 597.56,-627.26 606.04,-627.16 604.12,-621.89"/>
|
|
404
|
+
<text xml:space="preserve" text-anchor="middle" x="1210.15" y="-434.07" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
|
|
405
405
|
</g>
|
|
406
406
|
<!-- CronF -->
|
|
407
407
|
<g id="node30" class="node">
|
|
@@ -413,9 +413,17 @@
|
|
|
413
413
|
<!-- Reports->CronF -->
|
|
414
414
|
<g id="edge27" class="edge">
|
|
415
415
|
<title>Reports->CronF</title>
|
|
416
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
417
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
416
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M1127.9,-162.22C1132.81,-147.46 1141.73,-126.77 1156,-113.62 1163.04,-107.14 1168.11,-111.04 1176,-105.62 1191.72,-94.84 1206.34,-79.27 1217.22,-66.12"/>
|
|
417
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1219.11,-68.24 1221.94,-60.25 1214.75,-64.73 1219.11,-68.24"/>
|
|
418
|
+
</g>
|
|
419
|
+
<!-- Prefs -->
|
|
420
|
+
<g id="node32" class="node">
|
|
421
|
+
<title>Prefs</title>
|
|
422
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1539.88,-54.79C1539.88,-56.6 1517.97,-58.06 1491,-58.06 1464.03,-58.06 1442.12,-56.6 1442.12,-54.79 1442.12,-54.79 1442.12,-25.34 1442.12,-25.34 1442.12,-23.53 1464.03,-22.06 1491,-22.06 1517.97,-22.06 1539.88,-23.53 1539.88,-25.34 1539.88,-25.34 1539.88,-54.79 1539.88,-54.79"/>
|
|
423
|
+
<path fill="none" stroke="#334155" stroke-width="1.4" d="M1539.88,-54.79C1539.88,-52.98 1517.97,-51.52 1491,-51.52 1464.03,-51.52 1442.12,-52.98 1442.12,-54.79"/>
|
|
424
|
+
<text xml:space="preserve" text-anchor="middle" x="1491" y="-36.36" font-family="sans-Serif" font-size="11.00" fill="#0f172a">preferences.jsonl</text>
|
|
418
425
|
</g>
|
|
426
|
+
<!-- Reports->Prefs -->
|
|
419
427
|
<!-- MemIdx -->
|
|
420
428
|
<g id="node22" class="node">
|
|
421
429
|
<title>MemIdx</title>
|