pwn 0.5.779 → 0.5.781

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -3
  3. data/documentation/AI-Integration.md +4 -4
  4. data/documentation/AWS.md +10 -9
  5. data/documentation/Agent-Tool-Registry.md +20 -17
  6. data/documentation/Blockchain.md +3 -2
  7. data/documentation/Bounty.md +8 -6
  8. data/documentation/BurpSuite.md +6 -10
  9. data/documentation/CLI-Drivers.md +7 -4
  10. data/documentation/Capability-Broker-Sandbox.md +1 -1
  11. data/documentation/Configuration.md +23 -15
  12. data/documentation/Contributing.md +3 -3
  13. data/documentation/Cron.md +3 -2
  14. data/documentation/Diagrams.md +9 -3
  15. data/documentation/Drivers.md +12 -6
  16. data/documentation/Extrospection.md +25 -5
  17. data/documentation/FFI.md +15 -25
  18. data/documentation/Fuzzing.md +13 -13
  19. data/documentation/General-PWN-Usage.md +7 -4
  20. data/documentation/Harness-Evaluation.md +90 -3
  21. data/documentation/Home.md +6 -5
  22. data/documentation/How-PWN-Works.md +9 -10
  23. data/documentation/Installation.md +12 -11
  24. data/documentation/Metasploit.md +13 -19
  25. data/documentation/Mistakes.md +2 -2
  26. data/documentation/NmapIt.md +6 -3
  27. data/documentation/Operability.md +99 -0
  28. data/documentation/Persistence.md +3 -2
  29. data/documentation/Plugin-Degradation.md +4 -2
  30. data/documentation/Plugins.md +4 -11
  31. data/documentation/Policy-Benchmark.md +4 -0
  32. data/documentation/Reinforcement-Learning.md +19 -3
  33. data/documentation/Reporting.md +6 -5
  34. data/documentation/SAST.md +15 -10
  35. data/documentation/SDR-Decoder-Coverage.md +10 -4
  36. data/documentation/SDR.md +28 -40
  37. data/documentation/Session-Workflow.md +25 -12
  38. data/documentation/Sessions.md +7 -0
  39. data/documentation/Skills-Memory-Learning.md +11 -4
  40. data/documentation/Swarm.md +6 -0
  41. data/documentation/Transparent-Browser.md +1 -1
  42. data/documentation/Troubleshooting.md +6 -3
  43. data/documentation/What-is-PWN.md +4 -4
  44. data/documentation/Why-PWN.md +1 -1
  45. data/documentation/diagrams/agent-tool-registry.svg +219 -180
  46. data/documentation/diagrams/ai-integration-tool-calling.svg +35 -34
  47. data/documentation/diagrams/code-scanning-sast.svg +78 -78
  48. data/documentation/diagrams/cron-scheduling.svg +165 -145
  49. data/documentation/diagrams/dot/_THEME.md +6 -4
  50. data/documentation/diagrams/dot/agent-tool-registry.dot +6 -2
  51. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +1 -1
  52. data/documentation/diagrams/dot/code-scanning-sast.dot +8 -8
  53. data/documentation/diagrams/dot/cron-scheduling.dot +2 -0
  54. data/documentation/diagrams/dot/driver-framework.dot +1 -1
  55. data/documentation/diagrams/dot/extrospection-world-awareness.dot +2 -2
  56. data/documentation/diagrams/dot/fuzzing-workflow.dot +3 -3
  57. data/documentation/diagrams/dot/history-to-drivers.dot +1 -1
  58. data/documentation/diagrams/dot/memory-skills-detailed.dot +3 -3
  59. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +2 -2
  60. data/documentation/diagrams/dot/overall-pwn-architecture.dot +33 -121
  61. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -2
  62. data/documentation/diagrams/dot/plugin-ecosystem.dot +2 -2
  63. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +31 -167
  64. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +1 -1
  65. data/documentation/diagrams/dot/reinforcement-learning.dot +15 -7
  66. data/documentation/diagrams/dot/reporting-pipeline.dot +5 -3
  67. data/documentation/diagrams/dot/reverse-engineering-flow.dot +3 -3
  68. data/documentation/diagrams/dot/sdr-radio-flow.dot +5 -5
  69. data/documentation/diagrams/dot/sessions-cron-automation.dot +1 -1
  70. data/documentation/diagrams/dot/swarm-multi-agent.dot +3 -3
  71. data/documentation/diagrams/dot/task-summarizer.dot +2 -2
  72. data/documentation/diagrams/dot/web-application-testing.dot +4 -3
  73. data/documentation/diagrams/dot/zero-day-research-flow.dot +4 -3
  74. data/documentation/diagrams/driver-framework.svg +1 -1
  75. data/documentation/diagrams/extrospection-world-awareness.svg +178 -178
  76. data/documentation/diagrams/fuzzing-workflow.svg +58 -58
  77. data/documentation/diagrams/history-to-drivers.svg +42 -42
  78. data/documentation/diagrams/memory-skills-detailed.svg +210 -210
  79. data/documentation/diagrams/mistakes-negative-feedback.svg +116 -116
  80. data/documentation/diagrams/overall-pwn-architecture.svg +248 -404
  81. data/documentation/diagrams/persistence-filesystem.svg +143 -143
  82. data/documentation/diagrams/plugin-ecosystem.svg +100 -100
  83. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +233 -752
  84. data/documentation/diagrams/pwn-repl-prototyping.svg +27 -27
  85. data/documentation/diagrams/reinforcement-learning.svg +295 -221
  86. data/documentation/diagrams/reporting-pipeline.svg +94 -80
  87. data/documentation/diagrams/reverse-engineering-flow.svg +31 -31
  88. data/documentation/diagrams/sdr-radio-flow.svg +157 -155
  89. data/documentation/diagrams/sessions-cron-automation.svg +13 -13
  90. data/documentation/diagrams/swarm-multi-agent.svg +86 -86
  91. data/documentation/diagrams/task-summarizer.svg +57 -57
  92. data/documentation/diagrams/web-application-testing.svg +81 -75
  93. data/documentation/diagrams/zero-day-research-flow.svg +101 -92
  94. data/documentation/pwn-REPL.md +5 -3
  95. data/documentation/pwn-ai-Agent.md +18 -14
  96. data/documentation/pwn_silent_help_learn_demo.gif +0 -0
  97. data/etc/default_skills/pwn/ai/agent/learning/SKILL.md +1 -0
  98. data/lib/pwn/ai/agent/learning.rb +46 -1
  99. data/lib/pwn/ai/agent/loop.rb +6 -3
  100. data/lib/pwn/ai/agent/policy_evaluation.rb +5 -1
  101. data/lib/pwn/ai/agent/reward.rb +9 -0
  102. data/lib/pwn/version.rb +1 -1
  103. data/spec/fixtures/harness/completion_regressions.json +10 -0
  104. data/spec/fixtures/harness/completion_regressions.json.sha256 +1 -0
  105. data/spec/integration/harness_evaluation_spec.rb +13 -0
  106. data/spec/lib/pwn/ai/agent/learning_spec.rb +22 -0
  107. data/spec/lib/pwn/ai/agent/loop_spec.rb +39 -0
  108. data/spec/lib/pwn/ai/agent/policy_evaluation_spec.rb +6 -1
  109. data/spec/lib/pwn/ai/agent/reward_spec.rb +21 -0
  110. data/spec/support/harness/evaluate.rb +1 -1
  111. data/third_party/pwn_rdoc.jsonl +2 -1
  112. metadata +10 -7
@@ -4,27 +4,27 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Fuzz Pages: 1 -->
7
- <svg width="901pt" height="389pt"
8
- viewBox="0.00 0.00 901.00 389.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="958pt" height="389pt"
8
+ viewBox="0.00 0.00 958.00 389.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 346.07)">
10
10
  <title>PWN_Fuzz</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-346.07 858.2,-346.07 858.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="322.75" y="-280.87" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Fuzzing with PWN</text>
13
- <text xml:space="preserve" text-anchor="start" x="299.5" y="-269.42" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-346.07 914.45,-346.07 914.45,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="350.88" y="-280.87" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Fuzzing with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="327.62" y="-269.42" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_gen</title>
16
- <path fill="#022c22" stroke="#047857" d="M182.75,-36.87C182.75,-36.87 267.25,-36.87 267.25,-36.87 273.25,-36.87 279.25,-42.87 279.25,-48.87 279.25,-48.87 279.25,-175.87 279.25,-175.87 279.25,-181.87 273.25,-187.87 267.25,-187.87 267.25,-187.87 182.75,-187.87 182.75,-187.87 176.75,-187.87 170.75,-181.87 170.75,-175.87 170.75,-175.87 170.75,-48.87 170.75,-48.87 170.75,-42.87 176.75,-36.87 182.75,-36.87"/>
17
- <text xml:space="preserve" text-anchor="middle" x="225" y="-164.87" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Generate</text>
16
+ <path fill="#022c22" stroke="#047857" d="M182.75,-36.87C182.75,-36.87 300.25,-36.87 300.25,-36.87 306.25,-36.87 312.25,-42.87 312.25,-48.87 312.25,-48.87 312.25,-175.87 312.25,-175.87 312.25,-181.87 306.25,-187.87 300.25,-187.87 300.25,-187.87 182.75,-187.87 182.75,-187.87 176.75,-187.87 170.75,-181.87 170.75,-175.87 170.75,-175.87 170.75,-48.87 170.75,-48.87 170.75,-42.87 176.75,-36.87 182.75,-36.87"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="241.5" y="-164.87" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Generate</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_deliver</title>
21
- <path fill="#422006" stroke="#a16207" d="M362.25,-36.87C362.25,-36.87 479,-36.87 479,-36.87 485,-36.87 491,-42.87 491,-48.87 491,-48.87 491,-243.87 491,-243.87 491,-249.87 485,-255.87 479,-255.87 479,-255.87 362.25,-255.87 362.25,-255.87 356.25,-255.87 350.25,-249.87 350.25,-243.87 350.25,-243.87 350.25,-48.87 350.25,-48.87 350.25,-42.87 356.25,-36.87 362.25,-36.87"/>
22
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Deliver</text>
21
+ <path fill="#422006" stroke="#a16207" d="M395.25,-36.87C395.25,-36.87 512,-36.87 512,-36.87 518,-36.87 524,-42.87 524,-48.87 524,-48.87 524,-243.87 524,-243.87 524,-249.87 518,-255.87 512,-255.87 512,-255.87 395.25,-255.87 395.25,-255.87 389.25,-255.87 383.25,-249.87 383.25,-243.87 383.25,-243.87 383.25,-48.87 383.25,-48.87 383.25,-42.87 389.25,-36.87 395.25,-36.87"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Deliver</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_mon</title>
26
- <path fill="#450a0a" stroke="#b91c1c" d="M574,-104.87C574,-104.87 645.75,-104.87 645.75,-104.87 651.75,-104.87 657.75,-110.87 657.75,-116.87 657.75,-116.87 657.75,-243.87 657.75,-243.87 657.75,-249.87 651.75,-255.87 645.75,-255.87 645.75,-255.87 574,-255.87 574,-255.87 568,-255.87 562,-249.87 562,-243.87 562,-243.87 562,-116.87 562,-116.87 562,-110.87 568,-104.87 574,-104.87"/>
27
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Monitor</text>
26
+ <path fill="#450a0a" stroke="#b91c1c" d="M607,-104.87C607,-104.87 678.75,-104.87 678.75,-104.87 684.75,-104.87 690.75,-110.87 690.75,-116.87 690.75,-116.87 690.75,-243.87 690.75,-243.87 690.75,-249.87 684.75,-255.87 678.75,-255.87 678.75,-255.87 607,-255.87 607,-255.87 601,-255.87 595,-249.87 595,-243.87 595,-243.87 595,-116.87 595,-116.87 595,-110.87 601,-104.87 607,-104.87"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="642.88" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Monitor</text>
28
28
  </g>
29
29
  <!-- Seed -->
30
30
  <g id="node1" class="node">
@@ -36,125 +36,125 @@
36
36
  <!-- Fuzz -->
37
37
  <g id="node2" class="node">
38
38
  <title>Fuzz</title>
39
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M259.25,-148.87C259.25,-148.87 190.75,-148.87 190.75,-148.87 184.75,-148.87 178.75,-142.87 178.75,-136.87 178.75,-136.87 178.75,-124.87 178.75,-124.87 178.75,-118.87 184.75,-112.87 190.75,-112.87 190.75,-112.87 259.25,-112.87 259.25,-112.87 265.25,-112.87 271.25,-118.87 271.25,-124.87 271.25,-124.87 271.25,-136.87 271.25,-136.87 271.25,-142.87 265.25,-148.87 259.25,-148.87"/>
40
- <text xml:space="preserve" text-anchor="middle" x="225" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
41
- <text xml:space="preserve" text-anchor="middle" x="225" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mutate · generate</text>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M292.25,-148.87C292.25,-148.87 190.75,-148.87 190.75,-148.87 184.75,-148.87 178.75,-142.87 178.75,-136.87 178.75,-136.87 178.75,-124.87 178.75,-124.87 178.75,-118.87 184.75,-112.87 190.75,-112.87 190.75,-112.87 292.25,-112.87 292.25,-112.87 298.25,-112.87 304.25,-118.87 304.25,-124.87 304.25,-124.87 304.25,-136.87 304.25,-136.87 304.25,-142.87 298.25,-148.87 292.25,-148.87"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="241.5" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="241.5" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">http · file_format · socket</text>
42
42
  </g>
43
43
  <!-- Seed&#45;&gt;Fuzz -->
44
44
  <g id="edge1" class="edge">
45
45
  <title>Seed&#45;&gt;Fuzz</title>
46
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.03,-104.8C115.37,-109.41 144.07,-115.08 168.73,-119.95"/>
47
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="167.99,-122.66 176.38,-121.46 169.08,-117.17 167.99,-122.66"/>
46
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.27,-104.08C114.97,-108.18 142.98,-113.25 168.51,-117.86"/>
47
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="167.86,-120.59 176.23,-119.26 168.85,-115.08 167.86,-120.59"/>
48
48
  </g>
49
49
  <!-- Char -->
50
50
  <g id="node3" class="node">
51
51
  <title>Char</title>
52
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M250.62,-80.87C250.62,-80.87 199.38,-80.87 199.38,-80.87 193.38,-80.87 187.38,-74.87 187.38,-68.87 187.38,-68.87 187.38,-56.87 187.38,-56.87 187.38,-50.87 193.38,-44.87 199.38,-44.87 199.38,-44.87 250.62,-44.87 250.62,-44.87 256.62,-44.87 262.62,-50.87 262.62,-56.87 262.62,-56.87 262.62,-68.87 262.62,-68.87 262.62,-74.87 256.62,-80.87 250.62,-80.87"/>
53
- <text xml:space="preserve" text-anchor="middle" x="225" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Char</text>
54
- <text xml:space="preserve" text-anchor="middle" x="225" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">encodings</text>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M267.12,-80.87C267.12,-80.87 215.88,-80.87 215.88,-80.87 209.88,-80.87 203.88,-74.87 203.88,-68.87 203.88,-68.87 203.88,-56.87 203.88,-56.87 203.88,-50.87 209.88,-44.87 215.88,-44.87 215.88,-44.87 267.12,-44.87 267.12,-44.87 273.12,-44.87 279.12,-50.87 279.12,-56.87 279.12,-56.87 279.12,-68.87 279.12,-68.87 279.12,-74.87 273.12,-80.87 267.12,-80.87"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="241.5" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Char</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="241.5" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">encodings</text>
55
55
  </g>
56
56
  <!-- Seed&#45;&gt;Char -->
57
57
  <g id="edge2" class="edge">
58
58
  <title>Seed&#45;&gt;Char</title>
59
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.03,-87.46C118.11,-82.6 150.87,-76.5 177.22,-71.59"/>
60
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="177.7,-74.35 185.05,-70.13 176.67,-68.84 177.7,-74.35"/>
59
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.27,-88.14C122.83,-82.93 163.02,-76.08 193.84,-70.83"/>
60
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="194.14,-73.61 201.56,-69.51 193.2,-68.09 194.14,-73.61"/>
61
61
  </g>
62
62
  <!-- Sock -->
63
63
  <g id="node4" class="node">
64
64
  <title>Sock</title>
65
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M447,-216.87C447,-216.87 394.25,-216.87 394.25,-216.87 388.25,-216.87 382.25,-210.87 382.25,-204.87 382.25,-204.87 382.25,-192.87 382.25,-192.87 382.25,-186.87 388.25,-180.87 394.25,-180.87 394.25,-180.87 447,-180.87 447,-180.87 453,-180.87 459,-186.87 459,-192.87 459,-192.87 459,-204.87 459,-204.87 459,-210.87 453,-216.87 447,-216.87"/>
66
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
67
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP</text>
65
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M480,-216.87C480,-216.87 427.25,-216.87 427.25,-216.87 421.25,-216.87 415.25,-210.87 415.25,-204.87 415.25,-204.87 415.25,-192.87 415.25,-192.87 415.25,-186.87 421.25,-180.87 427.25,-180.87 427.25,-180.87 480,-180.87 480,-180.87 486,-180.87 492,-186.87 492,-192.87 492,-192.87 492,-204.87 492,-204.87 492,-210.87 486,-216.87 480,-216.87"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP</text>
68
68
  </g>
69
69
  <!-- Fuzz&#45;&gt;Sock -->
70
70
  <g id="edge3" class="edge">
71
71
  <title>Fuzz&#45;&gt;Sock</title>
72
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M271.89,-146.99C302.29,-157.67 342.06,-171.63 372.68,-182.39"/>
73
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="371.54,-184.95 380.01,-184.96 373.39,-179.67 371.54,-184.95"/>
72
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M299.92,-149.45C333.06,-160.18 374.24,-173.51 405.48,-183.62"/>
73
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="404.49,-186.24 412.96,-186.04 406.21,-180.91 404.49,-186.24"/>
74
74
  </g>
75
75
  <!-- Packet -->
76
76
  <g id="node5" class="node">
77
77
  <title>Packet</title>
78
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M451.12,-148.87C451.12,-148.87 390.12,-148.87 390.12,-148.87 384.12,-148.87 378.12,-142.87 378.12,-136.87 378.12,-136.87 378.12,-124.87 378.12,-124.87 378.12,-118.87 384.12,-112.87 390.12,-112.87 390.12,-112.87 451.12,-112.87 451.12,-112.87 457.12,-112.87 463.12,-118.87 463.12,-124.87 463.12,-124.87 463.12,-136.87 463.12,-136.87 463.12,-142.87 457.12,-148.87 451.12,-148.87"/>
79
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
80
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">raw L2/L3</text>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M484.12,-148.87C484.12,-148.87 423.12,-148.87 423.12,-148.87 417.12,-148.87 411.12,-142.87 411.12,-136.87 411.12,-136.87 411.12,-124.87 411.12,-124.87 411.12,-118.87 417.12,-112.87 423.12,-112.87 423.12,-112.87 484.12,-112.87 484.12,-112.87 490.12,-112.87 496.12,-118.87 496.12,-124.87 496.12,-124.87 496.12,-136.87 496.12,-136.87 496.12,-142.87 490.12,-148.87 484.12,-148.87"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">raw L2/L3</text>
81
81
  </g>
82
82
  <!-- Fuzz&#45;&gt;Packet -->
83
83
  <g id="edge4" class="edge">
84
84
  <title>Fuzz&#45;&gt;Packet</title>
85
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M271.89,-130.87C300.72,-130.87 337.98,-130.87 367.87,-130.87"/>
86
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="367.73,-133.67 375.73,-130.87 367.73,-128.07 367.73,-133.67"/>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M304.69,-130.87C335.22,-130.87 371.58,-130.87 400.61,-130.87"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="400.58,-133.67 408.58,-130.87 400.58,-128.07 400.58,-133.67"/>
87
87
  </g>
88
88
  <!-- NetApp -->
89
89
  <g id="node6" class="node">
90
90
  <title>NetApp</title>
91
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M471,-80.87C471,-80.87 370.25,-80.87 370.25,-80.87 364.25,-80.87 358.25,-74.87 358.25,-68.87 358.25,-68.87 358.25,-56.87 358.25,-56.87 358.25,-50.87 364.25,-44.87 370.25,-44.87 370.25,-44.87 471,-44.87 471,-44.87 477,-44.87 483,-50.87 483,-56.87 483,-56.87 483,-68.87 483,-68.87 483,-74.87 477,-80.87 471,-80.87"/>
92
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_fuzz_net_app_proto</text>
93
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CLI driver</text>
91
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M504,-80.87C504,-80.87 403.25,-80.87 403.25,-80.87 397.25,-80.87 391.25,-74.87 391.25,-68.87 391.25,-68.87 391.25,-56.87 391.25,-56.87 391.25,-50.87 397.25,-44.87 403.25,-44.87 403.25,-44.87 504,-44.87 504,-44.87 510,-44.87 516,-50.87 516,-56.87 516,-56.87 516,-68.87 516,-68.87 516,-74.87 510,-80.87 504,-80.87"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_fuzz_net_app_proto</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CLI driver</text>
94
94
  </g>
95
95
  <!-- Char&#45;&gt;NetApp -->
96
96
  <g id="edge5" class="edge">
97
97
  <title>Char&#45;&gt;NetApp</title>
98
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M262.88,-62.87C286.93,-62.87 319.12,-62.87 348.07,-62.87"/>
99
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="347.78,-65.67 355.78,-62.87 347.78,-60.07 347.78,-65.67"/>
98
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M279.58,-62.87C307.57,-62.87 346.84,-62.87 380.89,-62.87"/>
99
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="380.84,-65.67 388.84,-62.87 380.84,-60.07 380.84,-65.67"/>
100
100
  </g>
101
101
  <!-- PS -->
102
102
  <g id="node7" class="node">
103
103
  <title>PS</title>
104
- <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M637.75,-216.87C637.75,-216.87 582,-216.87 582,-216.87 576,-216.87 570,-210.87 570,-204.87 570,-204.87 570,-192.87 570,-192.87 570,-186.87 576,-180.87 582,-180.87 582,-180.87 637.75,-180.87 637.75,-180.87 643.75,-180.87 649.75,-186.87 649.75,-192.87 649.75,-192.87 649.75,-204.87 649.75,-204.87 649.75,-210.87 643.75,-216.87 637.75,-216.87"/>
105
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
104
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M670.75,-216.87C670.75,-216.87 615,-216.87 615,-216.87 609,-216.87 603,-210.87 603,-204.87 603,-204.87 603,-192.87 603,-192.87 603,-186.87 609,-180.87 615,-180.87 615,-180.87 670.75,-180.87 670.75,-180.87 676.75,-180.87 682.75,-186.87 682.75,-192.87 682.75,-192.87 682.75,-204.87 682.75,-204.87 682.75,-210.87 676.75,-216.87 670.75,-216.87"/>
105
+ <text xml:space="preserve" text-anchor="middle" x="642.88" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
+ <text xml:space="preserve" text-anchor="middle" x="642.88" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
107
107
  </g>
108
108
  <!-- Sock&#45;&gt;PS -->
109
109
  <g id="edge6" class="edge">
110
110
  <title>Sock&#45;&gt;PS</title>
111
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M459.52,-198.87C488.35,-198.87 528.27,-198.87 559.58,-198.87"/>
112
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="559.46,-201.67 567.46,-198.87 559.46,-196.07 559.46,-201.67"/>
111
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M492.52,-198.87C521.35,-198.87 561.27,-198.87 592.58,-198.87"/>
112
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="592.46,-201.67 600.46,-198.87 592.46,-196.07 592.46,-201.67"/>
113
113
  </g>
114
114
  <!-- Log -->
115
115
  <g id="node8" class="node">
116
116
  <title>Log</title>
117
- <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M632.88,-148.87C632.88,-148.87 586.88,-148.87 586.88,-148.87 580.88,-148.87 574.88,-142.87 574.88,-136.87 574.88,-136.87 574.88,-124.87 574.88,-124.87 574.88,-118.87 580.88,-112.87 586.88,-112.87 586.88,-112.87 632.88,-112.87 632.88,-112.87 638.88,-112.87 644.88,-118.87 644.88,-124.87 644.88,-124.87 644.88,-136.87 644.88,-136.87 644.88,-142.87 638.88,-148.87 632.88,-148.87"/>
118
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Log</text>
119
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash detect</text>
117
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M665.88,-148.87C665.88,-148.87 619.88,-148.87 619.88,-148.87 613.88,-148.87 607.88,-142.87 607.88,-136.87 607.88,-136.87 607.88,-124.87 607.88,-124.87 607.88,-118.87 613.88,-112.87 619.88,-112.87 619.88,-112.87 665.88,-112.87 665.88,-112.87 671.88,-112.87 677.88,-118.87 677.88,-124.87 677.88,-124.87 677.88,-136.87 677.88,-136.87 677.88,-142.87 671.88,-148.87 665.88,-148.87"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="642.88" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Log</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="642.88" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash detect</text>
120
120
  </g>
121
121
  <!-- Packet&#45;&gt;Log -->
122
122
  <g id="edge7" class="edge">
123
123
  <title>Packet&#45;&gt;Log</title>
124
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M463.65,-130.87C493.68,-130.87 534.01,-130.87 564.55,-130.87"/>
125
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.54,-133.67 572.54,-130.87 564.54,-128.07 564.54,-133.67"/>
124
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M496.65,-130.87C526.68,-130.87 567.01,-130.87 597.55,-130.87"/>
125
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="597.54,-133.67 605.54,-130.87 597.54,-128.07 597.54,-133.67"/>
126
126
  </g>
127
127
  <!-- NetApp&#45;&gt;Log -->
128
128
  <g id="edge8" class="edge">
129
129
  <title>NetApp&#45;&gt;Log</title>
130
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M472.79,-81.45C501.78,-91.98 537.67,-105.01 565.3,-115.05"/>
131
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.01,-117.56 572.49,-117.66 565.93,-112.3 564.01,-117.56"/>
130
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M505.79,-81.45C534.78,-91.98 570.67,-105.01 598.3,-115.05"/>
131
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="597.01,-117.56 605.49,-117.66 598.93,-112.3 597.01,-117.56"/>
132
132
  </g>
133
133
  <!-- Report -->
134
134
  <g id="node9" class="node">
135
135
  <title>Report</title>
136
- <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M803,-185.87C803,-185.87 748.75,-185.87 748.75,-185.87 742.75,-185.87 736.75,-179.87 736.75,-173.87 736.75,-173.87 736.75,-161.87 736.75,-161.87 736.75,-155.87 742.75,-149.87 748.75,-149.87 748.75,-149.87 803,-149.87 803,-149.87 809,-149.87 815,-155.87 815,-161.87 815,-161.87 815,-173.87 815,-173.87 815,-179.87 809,-185.87 803,-185.87"/>
137
- <text xml:space="preserve" text-anchor="middle" x="775.88" y="-170.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports::Fuzz</text>
138
- <text xml:space="preserve" text-anchor="middle" x="775.88" y="-158.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash triage</text>
136
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M859.25,-185.87C859.25,-185.87 781.75,-185.87 781.75,-185.87 775.75,-185.87 769.75,-179.87 769.75,-173.87 769.75,-173.87 769.75,-161.87 769.75,-161.87 769.75,-155.87 775.75,-149.87 781.75,-149.87 781.75,-149.87 859.25,-149.87 859.25,-149.87 865.25,-149.87 871.25,-155.87 871.25,-161.87 871.25,-161.87 871.25,-173.87 871.25,-173.87 871.25,-179.87 865.25,-185.87 859.25,-185.87"/>
137
+ <text xml:space="preserve" text-anchor="middle" x="820.5" y="-170.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports::Fuzz</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="820.5" y="-158.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">render results_hash</text>
139
139
  </g>
140
140
  <!-- PS&#45;&gt;Report -->
141
141
  <g id="edge9" class="edge">
142
142
  <title>PS&#45;&gt;Report</title>
143
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M650.16,-191.45C673.06,-187.12 702.13,-181.62 726.45,-177.03"/>
144
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="726.92,-179.79 734.26,-175.55 725.88,-174.28 726.92,-179.79"/>
143
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M683.29,-191.92C705.7,-187.96 734.22,-182.93 759.37,-178.49"/>
144
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="759.86,-181.24 767.25,-177.1 758.89,-175.73 759.86,-181.24"/>
145
145
  </g>
146
146
  <!-- Log&#45;&gt;Fuzz -->
147
147
  <g id="edge11" class="edge">
148
148
  <title>Log&#45;&gt;Fuzz</title>
149
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M596.69,-112.47C577.77,-85.77 538.53,-37.41 491,-18.37 432.93,4.89 407.43,7.01 350.25,-18.37 307.25,-37.46 315.17,-66.5 279.25,-96.87 275.22,-100.28 270.82,-103.61 266.34,-106.77"/>
150
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="264.92,-104.34 259.87,-111.15 268.06,-108.98 264.92,-104.34"/>
151
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-20.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">minimise + reseed</text>
149
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M629.69,-112.47C610.77,-85.77 571.53,-37.41 524,-18.37 465.93,4.89 440.43,7.01 383.25,-18.37 340.25,-37.46 349.85,-68.61 312.25,-96.87 307.11,-100.73 301.47,-104.34 295.68,-107.64"/>
150
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="294.58,-105.06 288.88,-111.33 297.25,-109.98 294.58,-105.06"/>
151
+ <text xml:space="preserve" text-anchor="middle" x="453.62" y="-20.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">operator triage + reseed</text>
152
152
  </g>
153
153
  <!-- Log&#45;&gt;Report -->
154
154
  <g id="edge10" class="edge">
155
155
  <title>Log&#45;&gt;Report</title>
156
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M645.25,-138.63C668.82,-143.95 700.43,-151.08 726.53,-156.97"/>
157
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="725.89,-159.69 734.31,-158.72 727.13,-154.23 725.89,-159.69"/>
156
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M678.15,-138.1C701.37,-142.99 732.66,-149.58 759.9,-155.32"/>
157
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="759.01,-157.99 767.42,-156.9 760.17,-152.51 759.01,-157.99"/>
158
158
  </g>
159
159
  </g>
160
160
  </svg>
@@ -4,17 +4,17 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_HistToDriver Pages: 1 -->
7
- <svg width="1027pt" height="368pt"
8
- viewBox="0.00 0.00 1027.00 368.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="1037pt" height="368pt"
8
+ viewBox="0.00 0.00 1037.00 368.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 325.2)">
10
10
  <title>PWN_HistToDriver</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-325.2 983.45,-325.2 983.45,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="260.5" y="-260" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">From REPL History → Reusable Driver / Skill</text>
13
- <text xml:space="preserve" text-anchor="start" x="348.62" y="-248.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">explore → history → bin/pwn_* driver → distill_skill</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-325.2 993.95,-325.2 993.95,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="265.75" y="-260" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">From REPL History → Reusable Driver / Skill</text>
13
+ <text xml:space="preserve" text-anchor="start" x="353.88" y="-248.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">explore → history → bin/pwn_* driver → distill_skill</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_out</title>
16
- <path fill="#2e1065" stroke="#6d28d9" d="M593.25,-8C593.25,-8 745.75,-8 745.75,-8 751.75,-8 757.75,-14 757.75,-20 757.75,-20 757.75,-223 757.75,-223 757.75,-229 751.75,-235 745.75,-235 745.75,-235 593.25,-235 593.25,-235 587.25,-235 581.25,-229 581.25,-223 581.25,-223 581.25,-20 581.25,-20 581.25,-14 587.25,-8 593.25,-8"/>
17
- <text xml:space="preserve" text-anchor="middle" x="669.5" y="-212" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Reusable Artifacts</text>
16
+ <path fill="#2e1065" stroke="#6d28d9" d="M603.75,-8C603.75,-8 756.25,-8 756.25,-8 762.25,-8 768.25,-14 768.25,-20 768.25,-20 768.25,-223 768.25,-223 768.25,-229 762.25,-235 756.25,-235 756.25,-235 603.75,-235 603.75,-235 597.75,-235 591.75,-229 591.75,-223 591.75,-223 591.75,-20 591.75,-20 591.75,-14 597.75,-8 603.75,-8"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="680" y="-212" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Reusable Artifacts</text>
18
18
  </g>
19
19
  <!-- Explore -->
20
20
  <g id="node1" class="node">
@@ -26,94 +26,94 @@
26
26
  <!-- Hist -->
27
27
  <g id="node2" class="node">
28
28
  <title>Hist</title>
29
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M318.25,-124C318.25,-126.21 297.86,-128 272.75,-128 247.64,-128 227.25,-126.21 227.25,-124 227.25,-124 227.25,-88 227.25,-88 227.25,-85.79 247.64,-84 272.75,-84 297.86,-84 318.25,-85.79 318.25,-88 318.25,-88 318.25,-124 318.25,-124"/>
30
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M318.25,-124C318.25,-121.79 297.86,-120 272.75,-120 247.64,-120 227.25,-121.79 227.25,-124"/>
31
- <text xml:space="preserve" text-anchor="middle" x="272.75" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn_history</text>
32
- <text xml:space="preserve" text-anchor="middle" x="272.75" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Pry `history` cmd</text>
29
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M328.75,-124C328.75,-126.21 306,-128 278,-128 250,-128 227.25,-126.21 227.25,-124 227.25,-124 227.25,-88 227.25,-88 227.25,-85.79 250,-84 278,-84 306,-84 328.75,-85.79 328.75,-88 328.75,-88 328.75,-124 328.75,-124"/>
30
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M328.75,-124C328.75,-121.79 306,-120 278,-120 250,-120 227.25,-121.79 227.25,-124"/>
31
+ <text xml:space="preserve" text-anchor="middle" x="278" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn/pwn_history</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="278" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Pry `history` cmd</text>
33
33
  </g>
34
34
  <!-- Explore&#45;&gt;Hist -->
35
35
  <g id="edge1" class="edge">
36
36
  <title>Explore&#45;&gt;Hist</title>
37
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M108.11,-106C141.23,-106 183.7,-106 217.06,-106"/>
38
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="216.69,-108.8 224.69,-106 216.69,-103.2 216.69,-108.8"/>
37
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M107.98,-106C140.83,-106 183.03,-106 217.05,-106"/>
38
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="216.9,-108.8 224.9,-106 216.9,-103.2 216.9,-108.8"/>
39
39
  <text xml:space="preserve" text-anchor="middle" x="167.38" y="-107.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">auto&#45;log</text>
40
40
  </g>
41
41
  <!-- Extract -->
42
42
  <g id="node3" class="node">
43
43
  <title>Extract</title>
44
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M490.25,-124C490.25,-124 417.25,-124 417.25,-124 411.25,-124 405.25,-118 405.25,-112 405.25,-112 405.25,-100 405.25,-100 405.25,-94 411.25,-88 417.25,-88 417.25,-88 490.25,-88 490.25,-88 496.25,-88 502.25,-94 502.25,-100 502.25,-100 502.25,-112 502.25,-112 502.25,-118 496.25,-124 490.25,-124"/>
45
- <text xml:space="preserve" text-anchor="middle" x="453.75" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">copy working lines</text>
44
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M500.75,-124C500.75,-124 427.75,-124 427.75,-124 421.75,-124 415.75,-118 415.75,-112 415.75,-112 415.75,-100 415.75,-100 415.75,-94 421.75,-88 427.75,-88 427.75,-88 500.75,-88 500.75,-88 506.75,-88 512.75,-94 512.75,-100 512.75,-100 512.75,-112 512.75,-112 512.75,-118 506.75,-124 500.75,-124"/>
45
+ <text xml:space="preserve" text-anchor="middle" x="464.25" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">copy working lines</text>
46
46
  </g>
47
47
  <!-- Hist&#45;&gt;Extract -->
48
48
  <g id="edge2" class="edge">
49
49
  <title>Hist&#45;&gt;Extract</title>
50
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M318.46,-106C341.68,-106 370.32,-106 395.18,-106"/>
51
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="394.89,-108.8 402.89,-106 394.89,-103.2 394.89,-108.8"/>
50
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M329.35,-106C352.85,-106 380.96,-106 405.34,-106"/>
51
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="405.22,-108.8 413.22,-106 405.22,-103.2 405.22,-108.8"/>
52
52
  </g>
53
53
  <!-- Driver -->
54
54
  <g id="node4" class="node">
55
55
  <title>Driver</title>
56
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M723.12,-196C723.12,-196 614.88,-196 614.88,-196 608.88,-196 602.88,-190 602.88,-184 602.88,-184 602.88,-172 602.88,-172 602.88,-166 608.88,-160 614.88,-160 614.88,-160 723.12,-160 723.12,-160 729.12,-160 735.12,-166 735.12,-172 735.12,-172 735.12,-184 735.12,-184 735.12,-190 729.12,-196 723.12,-196"/>
57
- <text xml:space="preserve" text-anchor="middle" x="669" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_&lt;name&gt;</text>
58
- <text xml:space="preserve" text-anchor="middle" x="669" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OptionParser + PWN calls</text>
56
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M733.62,-196C733.62,-196 625.38,-196 625.38,-196 619.38,-196 613.38,-190 613.38,-184 613.38,-184 613.38,-172 613.38,-172 613.38,-166 619.38,-160 625.38,-160 625.38,-160 733.62,-160 733.62,-160 739.62,-160 745.62,-166 745.62,-172 745.62,-172 745.62,-184 745.62,-184 745.62,-190 739.62,-196 733.62,-196"/>
57
+ <text xml:space="preserve" text-anchor="middle" x="679.5" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_&lt;name&gt;</text>
58
+ <text xml:space="preserve" text-anchor="middle" x="679.5" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OptionParser + PWN calls</text>
59
59
  </g>
60
60
  <!-- Extract&#45;&gt;Driver -->
61
61
  <g id="edge3" class="edge">
62
62
  <title>Extract&#45;&gt;Driver</title>
63
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M502.87,-122.25C532.61,-132.29 571.15,-145.3 603.51,-156.23"/>
64
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="602.56,-158.86 611.04,-158.77 604.35,-153.56 602.56,-158.86"/>
63
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M513.37,-122.25C543.11,-132.29 581.65,-145.3 614.01,-156.23"/>
64
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="613.06,-158.86 621.54,-158.77 614.85,-153.56 613.06,-158.86"/>
65
65
  </g>
66
66
  <!-- Skill -->
67
67
  <g id="node5" class="node">
68
68
  <title>Skill</title>
69
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M735.5,-124C735.5,-124 602.5,-124 602.5,-124 596.5,-124 590.5,-118 590.5,-112 590.5,-112 590.5,-100 590.5,-100 590.5,-94 596.5,-88 602.5,-88 602.5,-88 735.5,-88 735.5,-88 741.5,-88 747.5,-94 747.5,-100 747.5,-100 747.5,-112 747.5,-112 747.5,-118 741.5,-124 735.5,-124"/>
70
- <text xml:space="preserve" text-anchor="middle" x="669" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn/skills/&lt;name&gt;/SKILL.md</text>
71
- <text xml:space="preserve" text-anchor="middle" x="669" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
69
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M746,-124C746,-124 613,-124 613,-124 607,-124 601,-118 601,-112 601,-112 601,-100 601,-100 601,-94 607,-88 613,-88 613,-88 746,-88 746,-88 752,-88 758,-94 758,-100 758,-100 758,-112 758,-112 758,-118 752,-124 746,-124"/>
70
+ <text xml:space="preserve" text-anchor="middle" x="679.5" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn/skills/&lt;name&gt;/SKILL.md</text>
71
+ <text xml:space="preserve" text-anchor="middle" x="679.5" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
72
72
  </g>
73
73
  <!-- Extract&#45;&gt;Skill -->
74
74
  <g id="edge4" class="edge">
75
75
  <title>Extract&#45;&gt;Skill</title>
76
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M502.87,-106C525.74,-106 553.8,-106 580.27,-106"/>
77
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="579.96,-108.8 587.96,-106 579.96,-103.2 579.96,-108.8"/>
76
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M513.37,-106C536.24,-106 564.3,-106 590.77,-106"/>
77
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="590.46,-108.8 598.46,-106 590.46,-103.2 590.46,-108.8"/>
78
78
  </g>
79
79
  <!-- Cron -->
80
80
  <g id="node6" class="node">
81
81
  <title>Cron</title>
82
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M696.5,-52C696.5,-52 641.5,-52 641.5,-52 635.5,-52 629.5,-46 629.5,-40 629.5,-40 629.5,-28 629.5,-28 629.5,-22 635.5,-16 641.5,-16 641.5,-16 696.5,-16 696.5,-16 702.5,-16 708.5,-22 708.5,-28 708.5,-28 708.5,-40 708.5,-40 708.5,-46 702.5,-52 696.5,-52"/>
83
- <text xml:space="preserve" text-anchor="middle" x="669" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron_create</text>
84
- <text xml:space="preserve" text-anchor="middle" x="669" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">prompt: | ruby:</text>
82
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M707,-52C707,-52 652,-52 652,-52 646,-52 640,-46 640,-40 640,-40 640,-28 640,-28 640,-22 646,-16 652,-16 652,-16 707,-16 707,-16 713,-16 719,-22 719,-28 719,-28 719,-40 719,-40 719,-46 713,-52 707,-52"/>
83
+ <text xml:space="preserve" text-anchor="middle" x="679.5" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron_create</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="679.5" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">prompt: | ruby:</text>
85
85
  </g>
86
86
  <!-- Extract&#45;&gt;Cron -->
87
87
  <g id="edge5" class="edge">
88
88
  <title>Extract&#45;&gt;Cron</title>
89
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M502.87,-89.75C537.83,-77.95 584.94,-62.04 619.89,-50.24"/>
90
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="620.41,-53.02 627.09,-47.81 618.62,-47.72 620.41,-53.02"/>
89
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M513.37,-89.75C548.33,-77.95 595.44,-62.04 630.39,-50.24"/>
90
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="630.91,-53.02 637.59,-47.81 629.12,-47.72 630.91,-53.02"/>
91
91
  </g>
92
92
  <!-- CI -->
93
93
  <g id="node7" class="node">
94
94
  <title>CI</title>
95
- <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M928.25,-124C928.25,-124 880.75,-124 880.75,-124 874.75,-124 868.75,-118 868.75,-112 868.75,-112 868.75,-100 868.75,-100 868.75,-94 874.75,-88 880.75,-88 880.75,-88 928.25,-88 928.25,-88 934.25,-88 940.25,-94 940.25,-100 940.25,-100 940.25,-112 940.25,-112 940.25,-118 934.25,-124 928.25,-124"/>
96
- <text xml:space="preserve" text-anchor="middle" x="904.5" y="-108.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
97
- <text xml:space="preserve" text-anchor="middle" x="904.5" y="-96.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">headless run</text>
95
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M938.75,-124C938.75,-124 891.25,-124 891.25,-124 885.25,-124 879.25,-118 879.25,-112 879.25,-112 879.25,-100 879.25,-100 879.25,-94 885.25,-88 891.25,-88 891.25,-88 938.75,-88 938.75,-88 944.75,-88 950.75,-94 950.75,-100 950.75,-100 950.75,-112 950.75,-112 950.75,-118 944.75,-124 938.75,-124"/>
96
+ <text xml:space="preserve" text-anchor="middle" x="915" y="-108.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="915" y="-96.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">headless run</text>
98
98
  </g>
99
99
  <!-- Driver&#45;&gt;CI -->
100
100
  <g id="edge6" class="edge">
101
101
  <title>Driver&#45;&gt;CI</title>
102
- <path fill="none" stroke="#38bdf8" stroke-width="2" d="M730.44,-159.36C770.28,-147.08 821.64,-131.24 858.03,-120.02"/>
103
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="858.63,-122.77 865.45,-117.73 856.98,-117.41 858.63,-122.77"/>
102
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M740.94,-159.36C780.78,-147.08 832.14,-131.24 868.53,-120.02"/>
103
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="869.13,-122.77 875.95,-117.73 867.48,-117.41 869.13,-122.77"/>
104
104
  </g>
105
105
  <!-- Skill&#45;&gt;CI -->
106
106
  <g id="edge7" class="edge">
107
107
  <title>Skill&#45;&gt;CI</title>
108
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M748.08,-106C784.8,-106 827.29,-106 858.55,-106"/>
109
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="858.31,-108.8 866.31,-106 858.31,-103.2 858.31,-108.8"/>
110
- <text xml:space="preserve" text-anchor="middle" x="809.25" y="-107.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">pwn &#45;&#45;ai</text>
108
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M758.58,-106C795.3,-106 837.79,-106 869.05,-106"/>
109
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="868.81,-108.8 876.81,-106 868.81,-103.2 868.81,-108.8"/>
110
+ <text xml:space="preserve" text-anchor="middle" x="819.75" y="-107.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">pwn &#45;&#45;ai</text>
111
111
  </g>
112
112
  <!-- Cron&#45;&gt;CI -->
113
113
  <g id="edge8" class="edge">
114
114
  <title>Cron&#45;&gt;CI</title>
115
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M709.08,-46.05C750.36,-58.78 815.35,-78.82 858.68,-92.18"/>
116
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="857.77,-94.83 866.24,-94.51 859.42,-89.48 857.77,-94.83"/>
115
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M719.58,-46.05C760.86,-58.78 825.85,-78.82 869.18,-92.18"/>
116
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="868.27,-94.83 876.74,-94.51 869.92,-89.48 868.27,-94.83"/>
117
117
  </g>
118
118
  </g>
119
119
  </svg>