pwn 0.5.618 → 0.5.620

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +14 -6
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/Agent-Tool-Registry.md +3 -3
  6. data/documentation/Diagrams.md +6 -2
  7. data/documentation/Extrospection.md +30 -11
  8. data/documentation/Home.md +5 -4
  9. data/documentation/How-PWN-Works.md +7 -4
  10. data/documentation/Mistakes.md +96 -0
  11. data/documentation/Persistence.md +3 -1
  12. data/documentation/SDR.md +23 -5
  13. data/documentation/Skills-Memory-Learning.md +15 -5
  14. data/documentation/diagrams/agent-tool-registry.svg +94 -92
  15. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  16. data/documentation/diagrams/dot/extrospection-world-awareness.dot +9 -7
  17. data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
  18. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  19. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  20. data/documentation/diagrams/dot/persistence-filesystem.dot +3 -2
  21. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +19 -7
  22. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  23. data/documentation/diagrams/extrospection-world-awareness.svg +111 -93
  24. data/documentation/diagrams/memory-skills-detailed.svg +146 -97
  25. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  26. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  27. data/documentation/diagrams/persistence-filesystem.svg +77 -62
  28. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +217 -149
  29. data/documentation/diagrams/sdr-radio-flow.svg +76 -56
  30. data/documentation/pwn-ai-Agent.md +28 -15
  31. data/lib/pwn/ai/agent/extrospection.rb +65 -6
  32. data/lib/pwn/ai/agent/learning.rb +67 -7
  33. data/lib/pwn/ai/agent/loop.rb +72 -6
  34. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  35. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  36. data/lib/pwn/ai/agent/tools/extrospection.rb +2 -2
  37. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  38. data/lib/pwn/ai/agent.rb +1 -0
  39. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  40. data/lib/pwn/sdr/decoder/adsb.rb +101 -0
  41. data/lib/pwn/sdr/decoder/apt.rb +75 -0
  42. data/lib/pwn/sdr/decoder/bluetooth.rb +78 -0
  43. data/lib/pwn/sdr/decoder/dect.rb +84 -0
  44. data/lib/pwn/sdr/decoder/gps.rb +83 -0
  45. data/lib/pwn/sdr/decoder/gsm.rb +50 -29
  46. data/lib/pwn/sdr/decoder/iridium.rb +81 -0
  47. data/lib/pwn/sdr/decoder/lora.rb +87 -0
  48. data/lib/pwn/sdr/decoder/lte.rb +88 -0
  49. data/lib/pwn/sdr/decoder/morse.rb +64 -0
  50. data/lib/pwn/sdr/decoder/p25.rb +71 -0
  51. data/lib/pwn/sdr/decoder/pager.rb +77 -0
  52. data/lib/pwn/sdr/decoder/pocsag.rb +26 -11
  53. data/lib/pwn/sdr/decoder/rfid.rb +88 -0
  54. data/lib/pwn/sdr/decoder/rtl433.rb +95 -0
  55. data/lib/pwn/sdr/decoder/rtty.rb +66 -0
  56. data/lib/pwn/sdr/decoder/wifi.rb +98 -0
  57. data/lib/pwn/sdr/decoder/zigbee.rb +96 -0
  58. data/lib/pwn/sdr/decoder.rb +67 -7
  59. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  60. data/lib/pwn/sdr/gqrx.rb +186 -95
  61. data/lib/pwn/version.rb +1 -1
  62. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  63. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  64. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  65. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  66. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  67. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  68. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  69. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  70. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  71. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  72. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  73. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  74. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  75. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  76. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  77. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  78. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  79. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  80. data/third_party/pwn_rdoc.jsonl +92 -3
  81. metadata +44 -6
  82. data/README.md.bak +0 -200
@@ -4,402 +4,413 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Overall_Architecture Pages: 1 -->
7
- <svg width="1249pt" height="784pt"
8
- viewBox="0.00 0.00 1249.00 784.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
- <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 740.7)">
7
+ <svg width="1261pt" height="821pt"
8
+ viewBox="0.00 0.00 1261.00 821.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 777.83)">
10
10
  <title>PWN_Overall_Architecture</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-740.7 1205.66,-740.7 1205.66,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="317.23" y="-673.6" 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="509.23" y="-662.05" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Overall Architecture · lib/pwn/*</text>
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>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_actors</title>
16
- <path fill="#1e293b" stroke="#334155" stroke-dasharray="5,2" d="M300,-550.5C300,-550.5 885,-550.5 885,-550.5 891,-550.5 897,-556.5 897,-562.5 897,-562.5 897,-636.5 897,-636.5 897,-642.5 891,-648.5 885,-648.5 885,-648.5 300,-648.5 300,-648.5 294,-648.5 288,-642.5 288,-636.5 288,-636.5 288,-562.5 288,-562.5 288,-556.5 294,-550.5 300,-550.5"/>
17
- <text xml:space="preserve" text-anchor="middle" x="592.5" y="-623.6" font-family="sans-Serif" font-size="22.00" fill="#94a3b8">Actors</text>
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>
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="M166,-412.5C166,-412.5 684,-412.5 684,-412.5 690,-412.5 696,-418.5 696,-424.5 696,-424.5 696,-486 696,-486 696,-492 690,-498 684,-498 684,-498 166,-498 166,-498 160,-498 154,-492 154,-486 154,-486 154,-424.5 154,-424.5 154,-418.5 160,-412.5 166,-412.5"/>
22
- <text xml:space="preserve" text-anchor="middle" x="425" y="-473.1" font-family="sans-Serif" font-size="22.00" fill="#7dd3fc">Entry Points &#160;(bin/)</text>
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>
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="M130,-274.5C130,-274.5 799,-274.5 799,-274.5 805,-274.5 811,-280.5 811,-286.5 811,-286.5 811,-348 811,-348 811,-354 805,-360 799,-360 799,-360 130,-360 130,-360 124,-360 118,-354 118,-348 118,-348 118,-286.5 118,-286.5 118,-280.5 124,-274.5 130,-274.5"/>
27
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-335.1" font-family="sans-Serif" font-size="22.00" fill="#ddd6fe">PWN::AI::Agent</text>
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>
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="M32,-136.5C32,-136.5 949,-136.5 949,-136.5 955,-136.5 961,-142.5 961,-148.5 961,-148.5 961,-210 961,-210 961,-216 955,-222 949,-222 949,-222 32,-222 32,-222 26,-222 20,-216 20,-210 20,-210 20,-148.5 20,-148.5 20,-142.5 26,-136.5 32,-136.5"/>
32
- <text xml:space="preserve" text-anchor="middle" x="490.5" y="-197.1" font-family="sans-Serif" font-size="22.00" fill="#a7f3d0">Capability Namespaces &#160;(lib/pwn/*)</text>
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>
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 959,-8 959,-8 965,-8 971,-14 971,-20 971,-20 971,-81.5 971,-81.5 971,-87.5 965,-93.5 959,-93.5 959,-93.5 20,-93.5 20,-93.5 14,-93.5 8,-87.5 8,-81.5 8,-81.5 8,-20 8,-20 8,-14 14,-8 20,-8"/>
37
- <text xml:space="preserve" text-anchor="middle" x="489.5" y="-68.6" 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 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>
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="M414,-600.75C414,-600.75 308,-600.75 308,-600.75 302,-600.75 296,-594.75 296,-588.75 296,-588.75 296,-576.75 296,-576.75 296,-570.75 302,-564.75 308,-564.75 308,-564.75 414,-564.75 414,-564.75 420,-564.75 426,-570.75 426,-576.75 426,-576.75 426,-588.75 426,-588.75 426,-594.75 420,-600.75 414,-600.75"/>
43
- <text xml:space="preserve" text-anchor="middle" x="361" y="-585.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">👤 &#160;Researcher</text>
44
- <text xml:space="preserve" text-anchor="middle" x="361" y="-572.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Red Team · Bug Hunter</text>
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>
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="M266.25,-456.5C266.25,-456.5 173.75,-456.5 173.75,-456.5 167.75,-456.5 161.75,-450.5 161.75,-444.5 161.75,-444.5 161.75,-432.5 161.75,-432.5 161.75,-426.5 167.75,-420.5 173.75,-420.5 173.75,-420.5 266.25,-420.5 266.25,-420.5 272.25,-420.5 278.25,-426.5 278.25,-432.5 278.25,-432.5 278.25,-444.5 278.25,-444.5 278.25,-450.5 272.25,-456.5 266.25,-456.5"/>
50
- <text xml:space="preserve" text-anchor="middle" x="220" y="-441.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🐚 &#160;pwn REPL</text>
51
- <text xml:space="preserve" text-anchor="middle" x="220" y="-428.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Pry + PWN:: preload</text>
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>
52
52
  </g>
53
53
  <!-- User&#45;&gt;REPL -->
54
54
  <g id="edge1" class="edge">
55
55
  <title>User&#45;&gt;REPL</title>
56
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M343.71,-564.31C318.76,-539.14 272.56,-492.53 244.23,-463.94"/>
57
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="246.44,-462.19 238.82,-458.48 242.46,-466.14 246.44,-462.19"/>
56
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M353.71,-601.43C328.76,-576.26 282.56,-529.65 254.23,-501.07"/>
57
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="256.44,-499.32 248.82,-495.61 252.46,-503.26 256.44,-499.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="M419.75,-456.5C419.75,-456.5 330.25,-456.5 330.25,-456.5 324.25,-456.5 318.25,-450.5 318.25,-444.5 318.25,-444.5 318.25,-432.5 318.25,-432.5 318.25,-426.5 324.25,-420.5 330.25,-420.5 330.25,-420.5 419.75,-420.5 419.75,-420.5 425.75,-420.5 431.75,-426.5 431.75,-432.5 431.75,-432.5 431.75,-444.5 431.75,-444.5 431.75,-450.5 425.75,-456.5 419.75,-456.5"/>
63
- <text xml:space="preserve" text-anchor="middle" x="375" y="-441.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">✨ &#160;pwn&#45;ai</text>
64
- <text xml:space="preserve" text-anchor="middle" x="375" y="-428.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Agent TUI · pwn &#45;&#45;ai</text>
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>
65
65
  </g>
66
66
  <!-- User&#45;&gt;PwnAI -->
67
67
  <g id="edge2" class="edge">
68
68
  <title>User&#45;&gt;PwnAI</title>
69
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M362.72,-564.31C365.11,-539.99 369.47,-495.66 372.3,-466.91"/>
70
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="375.08,-467.28 373.08,-459.04 369.51,-466.73 375.08,-467.28"/>
69
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M372.72,-601.43C375.11,-577.12 379.47,-532.79 382.3,-504.03"/>
70
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="385.08,-504.4 383.08,-496.17 379.51,-503.86 385.08,-504.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="M560,-600.75C560,-600.75 478,-600.75 478,-600.75 472,-600.75 466,-594.75 466,-588.75 466,-588.75 466,-576.75 466,-576.75 466,-570.75 472,-564.75 478,-564.75 478,-564.75 560,-564.75 560,-564.75 566,-564.75 572,-570.75 572,-576.75 572,-576.75 572,-588.75 572,-588.75 572,-594.75 566,-600.75 560,-600.75"/>
76
- <text xml:space="preserve" text-anchor="middle" x="519" y="-585.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
77
- <text xml:space="preserve" text-anchor="middle" x="519" y="-572.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Headless pipelines</text>
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>
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="M543.75,-456.5C543.75,-456.5 484.25,-456.5 484.25,-456.5 478.25,-456.5 472.25,-450.5 472.25,-444.5 472.25,-444.5 472.25,-432.5 472.25,-432.5 472.25,-426.5 478.25,-420.5 484.25,-420.5 484.25,-420.5 543.75,-420.5 543.75,-420.5 549.75,-420.5 555.75,-426.5 555.75,-432.5 555.75,-432.5 555.75,-444.5 555.75,-444.5 555.75,-450.5 549.75,-456.5 543.75,-456.5"/>
83
- <text xml:space="preserve" text-anchor="middle" x="514" y="-441.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">📜 &#160;bin/pwn_*</text>
84
- <text xml:space="preserve" text-anchor="middle" x="514" y="-428.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">52 CLI drivers</text>
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>
85
85
  </g>
86
86
  <!-- CI&#45;&gt;CLI -->
87
87
  <g id="edge3" class="edge">
88
88
  <title>CI&#45;&gt;CLI</title>
89
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M518.39,-564.31C517.53,-539.99 515.97,-495.66 514.96,-466.91"/>
90
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="517.77,-466.95 514.69,-459.05 512.17,-467.15 517.77,-466.95"/>
89
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M528.39,-601.43C527.53,-577.12 525.97,-532.79 524.96,-504.03"/>
90
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="527.77,-504.07 524.69,-496.18 522.17,-504.27 527.77,-504.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="M675.88,-456.5C675.88,-456.5 608.12,-456.5 608.12,-456.5 602.12,-456.5 596.12,-450.5 596.12,-444.5 596.12,-444.5 596.12,-432.5 596.12,-432.5 596.12,-426.5 602.12,-420.5 608.12,-420.5 608.12,-420.5 675.88,-420.5 675.88,-420.5 681.88,-420.5 687.88,-426.5 687.88,-432.5 687.88,-432.5 687.88,-444.5 687.88,-444.5 687.88,-450.5 681.88,-456.5 675.88,-456.5"/>
96
- <text xml:space="preserve" text-anchor="middle" x="642" y="-441.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">⏱ &#160;PWN::Cron</text>
97
- <text xml:space="preserve" text-anchor="middle" x="642" y="-428.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Scheduled jobs</text>
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>
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
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M534.08,-564.31C555.75,-539.25 595.81,-492.92 620.55,-464.31"/>
103
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="622.39,-466.46 625.51,-458.57 618.16,-462.79 622.39,-466.46"/>
104
- <text xml:space="preserve" text-anchor="middle" x="599.56" y="-507.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">crontab</text>
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
+ <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>
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="M724.38,-607C724.38,-607 623.62,-607 623.62,-607 617.62,-607 611.62,-601 611.62,-595 611.62,-595 611.62,-570.5 611.62,-570.5 611.62,-564.5 617.62,-558.5 623.62,-558.5 623.62,-558.5 724.38,-558.5 724.38,-558.5 730.38,-558.5 736.38,-564.5 736.38,-570.5 736.38,-570.5 736.38,-595 736.38,-595 736.38,-601 730.38,-607 724.38,-607"/>
110
- <text xml:space="preserve" text-anchor="middle" x="674" y="-592.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🤖 &#160;LLM Providers</text>
111
- <text xml:space="preserve" text-anchor="middle" x="674" y="-579.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">OpenAI · Anthropic</text>
112
- <text xml:space="preserve" text-anchor="middle" x="674" y="-565.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Grok · Gemini · Ollama</text>
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>
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="M877.38,-607C877.38,-607 788.62,-607 788.62,-607 782.62,-607 776.62,-601 776.62,-595 776.62,-595 776.62,-570.5 776.62,-570.5 776.62,-564.5 782.62,-558.5 788.62,-558.5 788.62,-558.5 877.38,-558.5 877.38,-558.5 883.38,-558.5 889.38,-564.5 889.38,-570.5 889.38,-570.5 889.38,-595 889.38,-595 889.38,-601 883.38,-607 877.38,-607"/>
118
- <text xml:space="preserve" text-anchor="middle" x="833" y="-592.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🎯 &#160;Attack Surface</text>
119
- <text xml:space="preserve" text-anchor="middle" x="833" y="-579.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Hosts · Web · Cloud</text>
120
- <text xml:space="preserve" text-anchor="middle" x="833" y="-565.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Radio · Hardware</text>
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>
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="M262.38,-318.5C262.38,-318.5 137.62,-318.5 137.62,-318.5 131.62,-318.5 125.62,-312.5 125.62,-306.5 125.62,-306.5 125.62,-294.5 125.62,-294.5 125.62,-288.5 131.62,-282.5 137.62,-282.5 137.62,-282.5 262.38,-282.5 262.38,-282.5 268.38,-282.5 274.38,-288.5 274.38,-294.5 274.38,-294.5 274.38,-306.5 274.38,-306.5 274.38,-312.5 268.38,-318.5 262.38,-318.5"/>
126
- <text xml:space="preserve" text-anchor="middle" x="200" y="-303.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Loop</text>
127
- <text xml:space="preserve" text-anchor="middle" x="200" y="-290.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">plan → dispatch → observe</text>
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>
128
128
  </g>
129
129
  <!-- REPL&#45;&gt;Loop -->
130
130
  <g id="edge5" class="edge">
131
131
  <title>REPL&#45;&gt;Loop</title>
132
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M217.43,-420C214.02,-396.84 207.98,-355.79 203.99,-328.61"/>
133
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="206.78,-328.39 202.85,-320.88 201.24,-329.2 206.78,-328.39"/>
132
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M227.92,-457.18C225.01,-432.87 219.71,-388.54 216.28,-359.78"/>
133
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="219.06,-359.53 215.34,-351.91 213.5,-360.19 219.06,-359.53"/>
134
134
  </g>
135
135
  <!-- PwnAI&#45;&gt;Loop -->
136
136
  <g id="edge6" class="edge">
137
137
  <title>PwnAI&#45;&gt;Loop</title>
138
- <path fill="none" stroke="#a78bfa" stroke-width="2" d="M350.72,-419.95C334.81,-408.36 313.64,-392.73 295.25,-378.5 273.03,-361.32 248.39,-341.37 229.73,-326.08"/>
139
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="231.65,-324.03 223.69,-321.12 228.1,-328.36 231.65,-324.03"/>
140
- <text xml:space="preserve" text-anchor="middle" x="330.12" y="-369.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">natural language</text>
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
+ <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>
141
141
  </g>
142
142
  <!-- Registry -->
143
143
  <g id="node10" class="node">
144
144
  <title>Registry</title>
145
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M423.5,-318.5C423.5,-318.5 326.5,-318.5 326.5,-318.5 320.5,-318.5 314.5,-312.5 314.5,-306.5 314.5,-306.5 314.5,-294.5 314.5,-294.5 314.5,-288.5 320.5,-282.5 326.5,-282.5 326.5,-282.5 423.5,-282.5 423.5,-282.5 429.5,-282.5 435.5,-288.5 435.5,-294.5 435.5,-294.5 435.5,-306.5 435.5,-306.5 435.5,-312.5 429.5,-318.5 423.5,-318.5"/>
146
- <text xml:space="preserve" text-anchor="middle" x="375" y="-303.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Registry</text>
147
- <text xml:space="preserve" text-anchor="middle" x="375" y="-290.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">10 toolsets · 45+ tools</text>
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>
148
148
  </g>
149
149
  <!-- PwnAI&#45;&gt;Registry -->
150
150
  <g id="edge7" class="edge">
151
151
  <title>PwnAI&#45;&gt;Registry</title>
152
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M375,-420C375,-396.84 375,-355.79 375,-328.61"/>
153
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="377.8,-328.9 375,-320.9 372.2,-328.9 377.8,-328.9"/>
152
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M385,-457.18C385,-432.87 385,-388.54 385,-359.78"/>
153
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="387.8,-359.93 385,-351.93 382.2,-359.93 387.8,-359.93"/>
154
154
  </g>
155
155
  <!-- Swarm -->
156
156
  <g id="node11" class="node">
157
157
  <title>Swarm</title>
158
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M592.25,-318.5C592.25,-318.5 487.75,-318.5 487.75,-318.5 481.75,-318.5 475.75,-312.5 475.75,-306.5 475.75,-306.5 475.75,-294.5 475.75,-294.5 475.75,-288.5 481.75,-282.5 487.75,-282.5 487.75,-282.5 592.25,-282.5 592.25,-282.5 598.25,-282.5 604.25,-288.5 604.25,-294.5 604.25,-294.5 604.25,-306.5 604.25,-306.5 604.25,-312.5 598.25,-318.5 592.25,-318.5"/>
159
- <text xml:space="preserve" text-anchor="middle" x="540" y="-303.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Swarm</text>
160
- <text xml:space="preserve" text-anchor="middle" x="540" y="-290.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">personas · debate · bus</text>
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>
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
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M87.75,-180.5C87.75,-180.5 40.25,-180.5 40.25,-180.5 34.25,-180.5 28.25,-174.5 28.25,-168.5 28.25,-168.5 28.25,-156.5 28.25,-156.5 28.25,-150.5 34.25,-144.5 40.25,-144.5 40.25,-144.5 87.75,-144.5 87.75,-144.5 93.75,-144.5 99.75,-150.5 99.75,-156.5 99.75,-156.5 99.75,-168.5 99.75,-168.5 99.75,-174.5 93.75,-180.5 87.75,-180.5"/>
167
- <text xml:space="preserve" text-anchor="middle" x="64" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Plugins</text>
168
- <text xml:space="preserve" text-anchor="middle" x="64" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">66 modules</text>
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>
169
169
  </g>
170
170
  <!-- CLI&#45;&gt;Plugins -->
171
171
  <g id="edge18" class="edge">
172
172
  <title>CLI&#45;&gt;Plugins</title>
173
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M555,-419.82C561.94,-417.16 569.12,-414.61 576,-412.5 589.31,-408.42 812.25,-370.83 821,-360 844.89,-330.45 846.85,-302.36 821,-274.5 794.44,-245.87 155.32,-238.67 120,-222 104.46,-214.67 90.99,-201 81.16,-188.72"/>
174
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="83.5,-187.17 76.43,-182.5 79.04,-190.56 83.5,-187.17"/>
173
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M565.75,-456.95C572.47,-454.35 579.39,-451.82 586,-449.62 673.24,-420.72 729.87,-469.89 786,-397.12 812.6,-362.64 815.56,-331.11 786,-299.12 773.44,-285.54 138.51,-254.98 122,-246.62 104.82,-237.93 90.68,-221.45 80.91,-207.29"/>
174
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="83.48,-206.1 76.75,-200.95 78.8,-209.17 83.48,-206.1"/>
175
175
  </g>
176
176
  <!-- Prompt -->
177
177
  <g id="node12" class="node">
178
178
  <title>Prompt</title>
179
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M791.25,-318.5C791.25,-318.5 656.75,-318.5 656.75,-318.5 650.75,-318.5 644.75,-312.5 644.75,-306.5 644.75,-306.5 644.75,-294.5 644.75,-294.5 644.75,-288.5 650.75,-282.5 656.75,-282.5 656.75,-282.5 791.25,-282.5 791.25,-282.5 797.25,-282.5 803.25,-288.5 803.25,-294.5 803.25,-294.5 803.25,-306.5 803.25,-306.5 803.25,-312.5 797.25,-318.5 791.25,-318.5"/>
180
- <text xml:space="preserve" text-anchor="middle" x="724" y="-303.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
181
- <text xml:space="preserve" text-anchor="middle" x="724" y="-290.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">MEMORY · SKILLS · EXTRO</text>
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>
182
183
  </g>
183
184
  <!-- Cronb&#45;&gt;Prompt -->
184
185
  <!-- Loop&#45;&gt;LLM -->
185
- <g id="edge27" class="edge">
186
+ <g id="edge28" class="edge">
186
187
  <title>Loop&#45;&gt;LLM</title>
187
- <path fill="none" stroke="#c4b5fd" stroke-width="2" d="M221.96,-319.05C240.33,-332.71 267.84,-350.82 295,-360 328.85,-371.44 339.51,-363.84 375,-368 448.71,-376.64 657.14,-356.63 706,-412.5 738.98,-450.21 715.09,-511.05 694.64,-548.59"/>
188
- <polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="2" points="692.27,-547.09 690.77,-555.43 697.15,-549.85 692.27,-547.09"/>
189
- <text xml:space="preserve" text-anchor="middle" x="747.07" y="-435.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tool&#45;use API</text>
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
+ <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
191
  </g>
191
192
  <!-- Loop&#45;&gt;Plugins -->
192
193
  <g id="edge10" class="edge">
193
194
  <title>Loop&#45;&gt;Plugins</title>
194
- <path fill="none" stroke="#34d399" stroke-width="2" d="M179.38,-281.93C166.17,-270.46 148.84,-254.97 134.25,-240.5 117.56,-223.94 99.71,-204.36 86.18,-189.08"/>
195
- <polygon fill="#34d399" stroke="#34d399" stroke-width="2" points="88.53,-187.51 81.15,-183.36 84.33,-191.21 88.53,-187.51"/>
196
- <text xml:space="preserve" text-anchor="middle" x="154.12" y="-231.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">pwn_eval</text>
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
+ <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
198
  </g>
198
199
  <!-- SAST -->
199
200
  <g id="node14" class="node">
200
201
  <title>SAST</title>
201
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M182.12,-180.5C182.12,-180.5 151.88,-180.5 151.88,-180.5 145.88,-180.5 139.88,-174.5 139.88,-168.5 139.88,-168.5 139.88,-156.5 139.88,-156.5 139.88,-150.5 145.88,-144.5 151.88,-144.5 151.88,-144.5 182.12,-144.5 182.12,-144.5 188.12,-144.5 194.12,-150.5 194.12,-156.5 194.12,-156.5 194.12,-168.5 194.12,-168.5 194.12,-174.5 188.12,-180.5 182.12,-180.5"/>
202
- <text xml:space="preserve" text-anchor="middle" x="167" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">SAST</text>
203
- <text xml:space="preserve" text-anchor="middle" x="167" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">48 rules</text>
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>
204
205
  </g>
205
206
  <!-- Loop&#45;&gt;SAST -->
206
207
  <g id="edge11" class="edge">
207
208
  <title>Loop&#45;&gt;SAST</title>
208
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M195.75,-282C190.13,-258.84 180.17,-217.79 173.58,-190.61"/>
209
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="176.3,-189.96 171.69,-182.85 170.86,-191.28 176.3,-189.96"/>
209
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M207.78,-312.76C200.17,-287.08 185.97,-239.15 177.03,-208.97"/>
210
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="179.73,-208.23 174.77,-201.36 174.36,-209.82 179.73,-208.23"/>
210
211
  </g>
211
212
  <!-- WWW -->
212
213
  <g id="node15" class="node">
213
214
  <title>WWW</title>
214
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M305.38,-180.5C305.38,-180.5 246.62,-180.5 246.62,-180.5 240.62,-180.5 234.62,-174.5 234.62,-168.5 234.62,-168.5 234.62,-156.5 234.62,-156.5 234.62,-150.5 240.62,-144.5 246.62,-144.5 246.62,-144.5 305.38,-144.5 305.38,-144.5 311.38,-144.5 317.38,-150.5 317.38,-156.5 317.38,-156.5 317.38,-168.5 317.38,-168.5 317.38,-174.5 311.38,-180.5 305.38,-180.5"/>
215
- <text xml:space="preserve" text-anchor="middle" x="276" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">WWW</text>
216
- <text xml:space="preserve" text-anchor="middle" x="276" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">21 site drivers</text>
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>
217
218
  </g>
218
219
  <!-- Registry&#45;&gt;WWW -->
219
220
  <g id="edge12" class="edge">
220
221
  <title>Registry&#45;&gt;WWW</title>
221
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M362.26,-282C345.03,-258.33 314.2,-215.97 294.44,-188.83"/>
222
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="296.82,-187.34 289.85,-182.52 292.29,-190.64 296.82,-187.34"/>
222
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M372.31,-312.76C353.48,-286.63 318.07,-237.48 296.4,-207.41"/>
223
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="298.78,-205.92 291.83,-201.07 294.23,-209.19 298.78,-205.92"/>
223
224
  </g>
224
225
  <!-- AWS -->
225
226
  <g id="node16" class="node">
226
227
  <title>AWS</title>
227
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M415,-180.5C415,-180.5 369,-180.5 369,-180.5 363,-180.5 357,-174.5 357,-168.5 357,-168.5 357,-156.5 357,-156.5 357,-150.5 363,-144.5 369,-144.5 369,-144.5 415,-144.5 415,-144.5 421,-144.5 427,-150.5 427,-156.5 427,-156.5 427,-168.5 427,-168.5 427,-174.5 421,-180.5 415,-180.5"/>
228
- <text xml:space="preserve" text-anchor="middle" x="392" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">AWS</text>
229
- <text xml:space="preserve" text-anchor="middle" x="392" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">90 services</text>
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>
230
231
  </g>
231
232
  <!-- Registry&#45;&gt;AWS -->
232
233
  <g id="edge13" class="edge">
233
234
  <title>Registry&#45;&gt;AWS</title>
234
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M377.19,-282C380.08,-258.84 385.21,-217.79 388.61,-190.61"/>
235
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="391.36,-191.17 389.58,-182.89 385.81,-190.48 391.36,-191.17"/>
235
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M386.07,-312.76C387.62,-287.19 390.5,-239.57 392.33,-209.36"/>
236
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="395.13,-209.59 392.81,-201.43 389.54,-209.25 395.13,-209.59"/>
236
237
  </g>
237
238
  <!-- SDR -->
238
239
  <g id="node17" class="node">
239
240
  <title>SDR</title>
240
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M580.75,-180.5C580.75,-180.5 479.25,-180.5 479.25,-180.5 473.25,-180.5 467.25,-174.5 467.25,-168.5 467.25,-168.5 467.25,-156.5 467.25,-156.5 467.25,-150.5 473.25,-144.5 479.25,-144.5 479.25,-144.5 580.75,-144.5 580.75,-144.5 586.75,-144.5 592.75,-150.5 592.75,-156.5 592.75,-156.5 592.75,-168.5 592.75,-168.5 592.75,-174.5 586.75,-180.5 580.75,-180.5"/>
241
- <text xml:space="preserve" text-anchor="middle" x="530" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">SDR</text>
242
- <text xml:space="preserve" text-anchor="middle" x="530" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">GQRX · Flipper · RFID</text>
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>
243
245
  </g>
244
246
  <!-- Swarm&#45;&gt;SDR -->
245
247
  <g id="edge14" class="edge">
246
248
  <title>Swarm&#45;&gt;SDR</title>
247
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M538.71,-282C537.01,-258.84 533.99,-217.79 531.99,-190.61"/>
248
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="534.81,-190.67 531.43,-182.9 529.22,-191.08 534.81,-190.67"/>
249
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M544.34,-312.76C542.08,-288.81 538,-245.5 535.15,-215.28"/>
250
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="537.96,-215.25 534.42,-207.55 532.38,-215.77 537.96,-215.25"/>
249
251
  </g>
250
252
  <!-- Chain -->
251
253
  <g id="node18" class="node">
252
254
  <title>Chain</title>
253
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M691,-180.5C691,-180.5 645,-180.5 645,-180.5 639,-180.5 633,-174.5 633,-168.5 633,-168.5 633,-156.5 633,-156.5 633,-150.5 639,-144.5 645,-144.5 645,-144.5 691,-144.5 691,-144.5 697,-144.5 703,-150.5 703,-156.5 703,-156.5 703,-168.5 703,-168.5 703,-174.5 697,-180.5 691,-180.5"/>
254
- <text xml:space="preserve" text-anchor="middle" x="668" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Blockchain</text>
255
- <text xml:space="preserve" text-anchor="middle" x="668" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">BTC · ETH</text>
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
258
  </g>
257
259
  <!-- Swarm&#45;&gt;Chain -->
258
260
  <g id="edge15" class="edge">
259
261
  <title>Swarm&#45;&gt;Chain</title>
260
- <path fill="none" stroke="#34d399" stroke-width="1.3" d="M556.53,-281.96C571.33,-266.26 593.62,-242.6 613,-222 623.38,-210.97 634.85,-198.77 644.62,-188.37"/>
261
- <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="646.61,-190.35 650.05,-182.6 642.53,-186.51 646.61,-190.35"/>
262
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M560.71,-312.76C582.62,-286.52 623.92,-237.06 649,-207.03"/>
263
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="651.07,-208.92 654.05,-200.98 646.77,-205.33 651.07,-208.92"/>
262
264
  </g>
263
265
  <!-- Bounty -->
264
266
  <g id="node19" class="node">
265
267
  <title>Bounty</title>
266
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M816.88,-180.5C816.88,-180.5 755.12,-180.5 755.12,-180.5 749.12,-180.5 743.12,-174.5 743.12,-168.5 743.12,-168.5 743.12,-156.5 743.12,-156.5 743.12,-150.5 749.12,-144.5 755.12,-144.5 755.12,-144.5 816.88,-144.5 816.88,-144.5 822.88,-144.5 828.88,-150.5 828.88,-156.5 828.88,-156.5 828.88,-168.5 828.88,-168.5 828.88,-174.5 822.88,-180.5 816.88,-180.5"/>
267
- <text xml:space="preserve" text-anchor="middle" x="786" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Bounty</text>
268
- <text xml:space="preserve" text-anchor="middle" x="786" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">lifecycle replay</text>
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
271
  </g>
270
272
  <!-- Prompt&#45;&gt;Bounty -->
271
273
  <!-- Reports -->
272
274
  <g id="node20" class="node">
273
275
  <title>Reports</title>
274
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M941.12,-180.5C941.12,-180.5 880.88,-180.5 880.88,-180.5 874.88,-180.5 868.88,-174.5 868.88,-168.5 868.88,-168.5 868.88,-156.5 868.88,-156.5 868.88,-150.5 874.88,-144.5 880.88,-144.5 880.88,-144.5 941.12,-144.5 941.12,-144.5 947.12,-144.5 953.12,-150.5 953.12,-156.5 953.12,-156.5 953.12,-168.5 953.12,-168.5 953.12,-174.5 947.12,-180.5 941.12,-180.5"/>
275
- <text xml:space="preserve" text-anchor="middle" x="911" y="-165.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Reports</text>
276
- <text xml:space="preserve" text-anchor="middle" x="911" y="-152.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HTML · JSON</text>
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
279
  </g>
278
280
  <!-- Prompt&#45;&gt;Reports -->
279
281
  <!-- Memory -->
280
282
  <g id="node21" class="node">
281
283
  <title>Memory</title>
282
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M93.75,-48.73C93.75,-50.53 76.38,-52 55,-52 33.62,-52 16.25,-50.53 16.25,-48.73 16.25,-48.73 16.25,-19.27 16.25,-19.27 16.25,-17.47 33.62,-16 55,-16 76.38,-16 93.75,-17.47 93.75,-19.27 93.75,-19.27 93.75,-48.73 93.75,-48.73"/>
283
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M93.75,-48.73C93.75,-46.92 76.38,-45.45 55,-45.45 33.62,-45.45 16.25,-46.92 16.25,-48.73"/>
284
- <text xml:space="preserve" text-anchor="middle" x="55" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">memory.json</text>
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
+ <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>
285
287
  </g>
286
288
  <!-- Prompt&#45;&gt;Memory -->
287
- <g id="edge29" class="edge">
289
+ <g id="edge30" class="edge">
288
290
  <title>Prompt&#45;&gt;Memory</title>
289
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M813.43,-296.69C868.46,-289.75 935.12,-270.87 971,-222 993.49,-191.37 997.19,-164.04 971,-136.5 905.29,-67.41 201.22,-132 114,-93.5 94.34,-84.82 77.58,-66.43 67,-52.57"/>
290
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="813.24,-293.89 805.61,-297.59 813.88,-299.45 813.24,-293.89"/>
291
- <text xml:space="preserve" text-anchor="middle" x="1000.16" y="-159.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
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
+ <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>
292
294
  </g>
293
295
  <!-- Plugins&#45;&gt;Target -->
294
- <g id="edge28" class="edge">
296
+ <g id="edge29" class="edge">
295
297
  <title>Plugins&#45;&gt;Target</title>
296
- <path fill="none" stroke="#fb7185" stroke-width="2" d="M75.16,-181.11C85.06,-194.99 100.9,-213.4 120,-222 140.68,-231.32 301.36,-228.62 324,-230 383.76,-233.65 820.45,-230.45 861,-274.5 930.76,-350.28 879.92,-485.57 850.3,-548.22"/>
297
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="847.86,-546.84 846.89,-555.26 852.9,-549.28 847.86,-546.84"/>
298
- <text xml:space="preserve" text-anchor="middle" x="908.09" y="-369.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">attack</text>
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
+ <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>
299
301
  </g>
300
302
  <!-- Plugins&#45;&gt;Memory -->
301
303
  <g id="edge19" class="edge">
302
304
  <title>Plugins&#45;&gt;Memory</title>
303
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M62.75,-143.91C61.24,-122.76 58.7,-87.04 56.94,-62.3"/>
304
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="59.74,-62.18 56.38,-54.4 54.16,-62.58 59.74,-62.18"/>
305
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M64.61,-162.29C62.73,-138.62 59.37,-96.25 57.17,-68.4"/>
306
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="59.96,-68.22 56.54,-60.46 54.38,-68.66 59.96,-68.22"/>
305
307
  </g>
306
308
  <!-- Skills -->
307
309
  <g id="node22" class="node">
308
310
  <title>Skills</title>
309
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M198,-48.73C198,-50.53 183.66,-52 166,-52 148.34,-52 134,-50.53 134,-48.73 134,-48.73 134,-19.27 134,-19.27 134,-17.47 148.34,-16 166,-16 183.66,-16 198,-17.47 198,-19.27 198,-19.27 198,-48.73 198,-48.73"/>
310
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M198,-48.73C198,-46.92 183.66,-45.45 166,-45.45 148.34,-45.45 134,-46.92 134,-48.73"/>
311
- <text xml:space="preserve" text-anchor="middle" x="166" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">skills/*.md</text>
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
+ <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>
312
314
  </g>
313
315
  <!-- SAST&#45;&gt;Skills -->
314
316
  <g id="edge20" class="edge">
315
317
  <title>SAST&#45;&gt;Skills</title>
316
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M166.86,-143.91C166.69,-122.76 166.41,-87.04 166.22,-62.3"/>
317
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="169.02,-62.39 166.15,-54.41 163.42,-62.43 169.02,-62.39"/>
318
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M168.62,-162.29C168.11,-138.62 167.19,-96.25 166.59,-68.4"/>
319
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="169.39,-68.41 166.42,-60.47 163.79,-68.53 169.39,-68.41"/>
318
320
  </g>
319
321
  <!-- Learn -->
320
322
  <g id="node23" class="node">
321
323
  <title>Learn</title>
322
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M317.5,-48.73C317.5,-50.53 299.8,-52 278,-52 256.2,-52 238.5,-50.53 238.5,-48.73 238.5,-48.73 238.5,-19.27 238.5,-19.27 238.5,-17.47 256.2,-16 278,-16 299.8,-16 317.5,-17.47 317.5,-19.27 317.5,-19.27 317.5,-48.73 317.5,-48.73"/>
323
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M317.5,-48.73C317.5,-46.92 299.8,-45.45 278,-45.45 256.2,-45.45 238.5,-46.92 238.5,-48.73"/>
324
- <text xml:space="preserve" text-anchor="middle" x="278" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">learning.jsonl</text>
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
+ <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>
325
327
  </g>
326
328
  <!-- WWW&#45;&gt;Learn -->
327
329
  <g id="edge21" class="edge">
328
330
  <title>WWW&#45;&gt;Learn</title>
329
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M276.28,-143.91C276.61,-122.76 277.18,-87.04 277.57,-62.3"/>
330
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="280.37,-62.45 277.69,-54.41 274.77,-62.36 280.37,-62.45"/>
331
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M278,-162.29C278,-138.62 278,-96.25 278,-68.4"/>
332
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="280.8,-68.47 278,-60.47 275.2,-68.47 280.8,-68.47"/>
331
333
  </g>
332
334
  <!-- Metrics -->
333
335
  <g id="node24" class="node">
334
336
  <title>Metrics</title>
335
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M430.5,-48.73C430.5,-50.53 414.14,-52 394,-52 373.86,-52 357.5,-50.53 357.5,-48.73 357.5,-48.73 357.5,-19.27 357.5,-19.27 357.5,-17.47 373.86,-16 394,-16 414.14,-16 430.5,-17.47 430.5,-19.27 430.5,-19.27 430.5,-48.73 430.5,-48.73"/>
336
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M430.5,-48.73C430.5,-46.92 414.14,-45.45 394,-45.45 373.86,-45.45 357.5,-46.92 357.5,-48.73"/>
337
- <text xml:space="preserve" text-anchor="middle" x="394" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">metrics.json</text>
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
+ <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>
338
340
  </g>
339
341
  <!-- AWS&#45;&gt;Metrics -->
340
342
  <g id="edge22" class="edge">
341
343
  <title>AWS&#45;&gt;Metrics</title>
342
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M392.28,-143.91C392.61,-122.76 393.18,-87.04 393.57,-62.3"/>
343
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="396.37,-62.45 393.69,-54.41 390.77,-62.36 396.37,-62.45"/>
344
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M394,-162.29C394,-138.62 394,-96.25 394,-68.4"/>
345
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="396.8,-68.47 394,-60.47 391.2,-68.47 396.8,-68.47"/>
344
346
  </g>
345
- <!-- Extro -->
347
+ <!-- MistF -->
346
348
  <g id="node25" class="node">
349
+ <title>MistF</title>
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
+ <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>
353
+ </g>
354
+ <!-- SDR&#45;&gt;MistF -->
355
+ <!-- Extro -->
356
+ <g id="node26" class="node">
347
357
  <title>Extro</title>
348
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M573.12,-48.73C573.12,-50.53 550.21,-52 522,-52 493.79,-52 470.88,-50.53 470.88,-48.73 470.88,-48.73 470.88,-19.27 470.88,-19.27 470.88,-17.47 493.79,-16 522,-16 550.21,-16 573.12,-17.47 573.12,-19.27 573.12,-19.27 573.12,-48.73 573.12,-48.73"/>
349
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M573.12,-48.73C573.12,-46.92 550.21,-45.45 522,-45.45 493.79,-45.45 470.88,-46.92 470.88,-48.73"/>
350
- <text xml:space="preserve" text-anchor="middle" x="522" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
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>
351
362
  </g>
352
363
  <!-- SDR&#45;&gt;Extro -->
353
- <g id="edge23" class="edge">
364
+ <g id="edge24" class="edge">
354
365
  <title>SDR&#45;&gt;Extro</title>
355
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M528.89,-143.91C527.55,-122.76 525.29,-87.04 523.73,-62.3"/>
356
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="526.53,-62.21 523.23,-54.4 520.94,-62.56 526.53,-62.21"/>
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"/>
357
368
  </g>
358
369
  <!-- Sessions -->
359
- <g id="node26" class="node">
370
+ <g id="node27" class="node">
360
371
  <title>Sessions</title>
361
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M702.75,-48.73C702.75,-50.53 682.69,-52 658,-52 633.31,-52 613.25,-50.53 613.25,-48.73 613.25,-48.73 613.25,-19.27 613.25,-19.27 613.25,-17.47 633.31,-16 658,-16 682.69,-16 702.75,-17.47 702.75,-19.27 702.75,-19.27 702.75,-48.73 702.75,-48.73"/>
362
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M702.75,-48.73C702.75,-46.92 682.69,-45.45 658,-45.45 633.31,-45.45 613.25,-46.92 613.25,-48.73"/>
363
- <text xml:space="preserve" text-anchor="middle" x="658" y="-30.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">sessions/*.jsonl</text>
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>
364
375
  </g>
365
376
  <!-- Chain&#45;&gt;Sessions -->
366
- <g id="edge24" class="edge">
377
+ <g id="edge25" class="edge">
367
378
  <title>Chain&#45;&gt;Sessions</title>
368
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M666.61,-143.91C664.94,-122.76 662.11,-87.04 660.16,-62.3"/>
369
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="662.96,-62.16 659.53,-54.4 657.37,-62.6 662.96,-62.16"/>
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"/>
370
381
  </g>
371
382
  <!-- SwarmB -->
372
- <g id="node27" class="node">
383
+ <g id="node28" class="node">
373
384
  <title>SwarmB</title>
374
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M843.38,-48.73C843.38,-50.53 820.8,-52 793,-52 765.2,-52 742.62,-50.53 742.62,-48.73 742.62,-48.73 742.62,-19.27 742.62,-19.27 742.62,-17.47 765.2,-16 793,-16 820.8,-16 843.38,-17.47 843.38,-19.27 843.38,-19.27 843.38,-48.73 843.38,-48.73"/>
375
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M843.38,-48.73C843.38,-46.92 820.8,-45.45 793,-45.45 765.2,-45.45 742.62,-46.92 742.62,-48.73"/>
376
- <text xml:space="preserve" text-anchor="middle" x="793" y="-30.3" 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="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>
377
388
  </g>
378
389
  <!-- Bounty&#45;&gt;SwarmB -->
379
- <g id="edge25" class="edge">
390
+ <g id="edge26" class="edge">
380
391
  <title>Bounty&#45;&gt;SwarmB</title>
381
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M786.97,-143.91C788.14,-122.76 790.12,-87.04 791.49,-62.3"/>
382
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="794.28,-62.55 791.93,-54.4 788.69,-62.24 794.28,-62.55"/>
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"/>
383
394
  </g>
384
395
  <!-- Reports&#45;&gt;User -->
385
- <g id="edge30" class="edge">
396
+ <g id="edge31" class="edge">
386
397
  <title>Reports&#45;&gt;User</title>
387
- <path fill="none" stroke="#38bdf8" stroke-width="2" d="M920.53,-181.03C929.12,-194.86 943.12,-213.24 961,-222 977.78,-230.22 1114.82,-217.83 1129,-230 1172.94,-267.73 1170.73,-312.22 1138,-360 957.75,-623.19 754.79,-470.45 446,-550.5 435.5,-553.22 424.48,-556.75 413.99,-560.44"/>
388
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="413.13,-557.78 406.56,-563.14 415.04,-563.04 413.13,-557.78"/>
389
- <text xml:space="preserve" text-anchor="middle" x="1145.79" y="-369.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
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
+ <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>
390
401
  </g>
391
402
  <!-- CronF -->
392
- <g id="node28" class="node">
403
+ <g id="node29" class="node">
393
404
  <title>CronF</title>
394
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M962.5,-48.73C962.5,-50.53 944.8,-52 923,-52 901.2,-52 883.5,-50.53 883.5,-48.73 883.5,-48.73 883.5,-19.27 883.5,-19.27 883.5,-17.47 901.2,-16 923,-16 944.8,-16 962.5,-17.47 962.5,-19.27 962.5,-19.27 962.5,-48.73 962.5,-48.73"/>
395
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M962.5,-48.73C962.5,-46.92 944.8,-45.45 923,-45.45 901.2,-45.45 883.5,-46.92 883.5,-48.73"/>
396
- <text xml:space="preserve" text-anchor="middle" x="923" y="-30.3" 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="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>
397
408
  </g>
398
409
  <!-- Reports&#45;&gt;CronF -->
399
- <g id="edge26" class="edge">
410
+ <g id="edge27" class="edge">
400
411
  <title>Reports&#45;&gt;CronF</title>
401
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M912.67,-143.91C914.67,-122.76 918.06,-87.04 920.41,-62.3"/>
402
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="923.19,-62.63 921.16,-54.4 917.62,-62.1 923.19,-62.63"/>
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"/>
403
414
  </g>
404
415
  </g>
405
416
  </svg>