pwn 0.5.620 → 0.5.621

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/documentation/Agent-Tool-Registry.md +2 -2
  4. data/documentation/Cron.md +13 -0
  5. data/documentation/Diagrams.md +1 -1
  6. data/documentation/Extrospection.md +71 -5
  7. data/documentation/Home.md +2 -2
  8. data/documentation/How-PWN-Works.md +1 -1
  9. data/documentation/Mistakes.md +2 -1
  10. data/documentation/Persistence.md +2 -1
  11. data/documentation/Skills-Memory-Learning.md +1 -0
  12. data/documentation/Transparent-Browser.md +18 -1
  13. data/documentation/diagrams/agent-tool-registry.svg +55 -54
  14. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  15. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  16. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  17. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  18. data/documentation/diagrams/cron-scheduling.svg +23 -23
  19. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  20. data/documentation/diagrams/dot/extrospection-world-awareness.dot +29 -8
  21. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -0
  22. data/documentation/diagrams/dot/overall-pwn-architecture.dot +2 -2
  23. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  24. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
  25. data/documentation/diagrams/driver-framework.svg +13 -13
  26. data/documentation/diagrams/extrospection-world-awareness.svg +229 -99
  27. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  28. data/documentation/diagrams/hardware-hacking.svg +18 -18
  29. data/documentation/diagrams/history-to-drivers.svg +18 -18
  30. data/documentation/diagrams/memory-skills-detailed.svg +124 -101
  31. data/documentation/diagrams/mistakes-negative-feedback.svg +55 -55
  32. data/documentation/diagrams/network-infra-testing.svg +27 -27
  33. data/documentation/diagrams/overall-pwn-architecture.svg +85 -85
  34. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  35. data/documentation/diagrams/persistence-filesystem.svg +94 -85
  36. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  37. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +226 -180
  38. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  39. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  40. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  41. data/documentation/diagrams/sdr-radio-flow.svg +31 -31
  42. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  43. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  44. data/documentation/diagrams/web-application-testing.svg +26 -26
  45. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  46. data/documentation/pwn-ai-Agent.md +1 -1
  47. data/lib/pwn/ai/agent/extrospection.rb +433 -4
  48. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  49. data/lib/pwn/sdr/decoder/adsb.rb +14 -33
  50. data/lib/pwn/sdr/decoder/apt.rb +97 -36
  51. data/lib/pwn/sdr/decoder/base.rb +258 -171
  52. data/lib/pwn/sdr/decoder/bluetooth.rb +13 -20
  53. data/lib/pwn/sdr/decoder/dect.rb +13 -27
  54. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  55. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  56. data/lib/pwn/sdr/decoder/gps.rb +12 -21
  57. data/lib/pwn/sdr/decoder/gsm.rb +21 -73
  58. data/lib/pwn/sdr/decoder/iridium.rb +11 -26
  59. data/lib/pwn/sdr/decoder/lora.rb +16 -23
  60. data/lib/pwn/sdr/decoder/lte.rb +11 -32
  61. data/lib/pwn/sdr/decoder/morse.rb +95 -21
  62. data/lib/pwn/sdr/decoder/p25.rb +19 -16
  63. data/lib/pwn/sdr/decoder/pager.rb +22 -38
  64. data/lib/pwn/sdr/decoder/pocsag.rb +175 -68
  65. data/lib/pwn/sdr/decoder/rfid.rb +24 -33
  66. data/lib/pwn/sdr/decoder/rtl433.rb +21 -30
  67. data/lib/pwn/sdr/decoder/rtty.rb +100 -27
  68. data/lib/pwn/sdr/decoder/wifi.rb +21 -42
  69. data/lib/pwn/sdr/decoder/zigbee.rb +18 -40
  70. data/lib/pwn/sdr/decoder.rb +8 -0
  71. data/lib/pwn/version.rb +1 -1
  72. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  73. data/third_party/pwn_rdoc.jsonl +24 -3
  74. metadata +3 -1
@@ -4,200 +4,330 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Extrospection Pages: 1 -->
7
- <svg width="827pt" height="635pt"
8
- viewBox="0.00 0.00 827.00 635.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 592.2)">
7
+ <svg width="1157pt" height="987pt"
8
+ viewBox="0.00 0.00 1157.00 987.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 943.33)">
10
10
  <title>PWN_Extrospection</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-592.2 783.95,-592.2 783.95,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="124" y="-527" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Extrospection — World Awareness</text>
13
- <text xml:space="preserve" text-anchor="start" x="175.75" y="-515.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">snapshot · drift · observe · intel · correlate &#160;— &#160;host · net · toolchain · repo · env · rf</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-943.33 1114.2,-943.33 1114.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="289.12" y="-878.13" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Extrospection — World Awareness</text>
13
+ <text xml:space="preserve" text-anchor="start" x="290.25" y="-866.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">snapshot · drift · observe · intel · watch · verify · correlate &#160;— &#160;host · net · toolchain · repo · env · rf · web</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_world</title>
16
- <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M20,-47C20,-47 155.5,-47 155.5,-47 161.5,-47 167.5,-53 167.5,-59 167.5,-59 167.5,-490 167.5,-490 167.5,-496 161.5,-502 155.5,-502 155.5,-502 20,-502 20,-502 14,-502 8,-496 8,-490 8,-490 8,-59 8,-59 8,-53 14,-47 20,-47"/>
17
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-479" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Outside World</text>
16
+ <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M20,-314.13C20,-314.13 155.5,-314.13 155.5,-314.13 161.5,-314.13 167.5,-320.13 167.5,-326.13 167.5,-326.13 167.5,-841.13 167.5,-841.13 167.5,-847.13 161.5,-853.13 155.5,-853.13 155.5,-853.13 20,-853.13 20,-853.13 14,-853.13 8,-847.13 8,-841.13 8,-841.13 8,-326.13 8,-326.13 8,-320.13 14,-314.13 20,-314.13"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-830.13" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Outside World</text>
18
18
  </g>
19
19
  <g id="clust3" class="cluster">
20
20
  <title>cluster_eng</title>
21
- <path fill="#422006" stroke="#a16207" stroke-width="2" d="M292,-8C292,-8 473,-8 473,-8 479,-8 485,-14 485,-20 485,-20 485,-404 485,-404 485,-410 479,-416 473,-416 473,-416 292,-416 292,-416 286,-416 280,-410 280,-404 280,-404 280,-20 280,-20 280,-14 286,-8 292,-8"/>
22
- <text xml:space="preserve" text-anchor="middle" x="382.5" y="-393" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Extrospection Engine</text>
21
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M565.62,-148.13C565.62,-148.13 746.62,-148.13 746.62,-148.13 752.62,-148.13 758.62,-154.13 758.62,-160.13 758.62,-160.13 758.62,-714.13 758.62,-714.13 758.62,-720.13 752.62,-726.13 746.62,-726.13 746.62,-726.13 565.62,-726.13 565.62,-726.13 559.62,-726.13 553.62,-720.13 553.62,-714.13 553.62,-714.13 553.62,-160.13 553.62,-160.13 553.62,-154.13 559.62,-148.13 565.62,-148.13"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="656.12" y="-703.13" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Extrospection Engine</text>
23
23
  </g>
24
24
  <!-- Host -->
25
25
  <g id="node1" class="node">
26
26
  <title>Host</title>
27
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M132.88,-463C132.88,-463 42.62,-463 42.62,-463 36.62,-463 30.62,-457 30.62,-451 30.62,-451 30.62,-439 30.62,-439 30.62,-433 36.62,-427 42.62,-427 42.62,-427 132.88,-427 132.88,-427 138.88,-427 144.88,-433 144.88,-439 144.88,-439 144.88,-451 144.88,-451 144.88,-457 138.88,-463 132.88,-463"/>
28
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-448.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">host</text>
29
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-434.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">uname · distro · arch</text>
27
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M132.88,-814.13C132.88,-814.13 42.62,-814.13 42.62,-814.13 36.62,-814.13 30.62,-808.13 30.62,-802.13 30.62,-802.13 30.62,-790.13 30.62,-790.13 30.62,-784.13 36.62,-778.13 42.62,-778.13 42.62,-778.13 132.88,-778.13 132.88,-778.13 138.88,-778.13 144.88,-784.13 144.88,-790.13 144.88,-790.13 144.88,-802.13 144.88,-802.13 144.88,-808.13 138.88,-814.13 132.88,-814.13"/>
28
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-799.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">host</text>
29
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-785.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">uname · distro · arch</text>
30
30
  </g>
31
31
  <!-- Snap -->
32
- <g id="node7" class="node">
32
+ <g id="node9" class="node">
33
33
  <title>Snap</title>
34
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M436.88,-376.25C436.88,-376.25 327.12,-376.25 327.12,-376.25 321.12,-376.25 315.12,-370.25 315.12,-364.25 315.12,-364.25 315.12,-339.75 315.12,-339.75 315.12,-333.75 321.12,-327.75 327.12,-327.75 327.12,-327.75 436.88,-327.75 436.88,-327.75 442.88,-327.75 448.88,-333.75 448.88,-339.75 448.88,-339.75 448.88,-364.25 448.88,-364.25 448.88,-370.25 442.88,-376.25 436.88,-376.25"/>
35
- <text xml:space="preserve" text-anchor="middle" x="382" y="-361.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_snapshot</text>
36
- <text xml:space="preserve" text-anchor="middle" x="382" y="-348.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">probe_host/net/toolchain</text>
37
- <text xml:space="preserve" text-anchor="middle" x="382" y="-334.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">probe_repo/env/rf</text>
34
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M710.5,-686.38C710.5,-686.38 600.75,-686.38 600.75,-686.38 594.75,-686.38 588.75,-680.38 588.75,-674.38 588.75,-674.38 588.75,-649.88 588.75,-649.88 588.75,-643.88 594.75,-637.88 600.75,-637.88 600.75,-637.88 710.5,-637.88 710.5,-637.88 716.5,-637.88 722.5,-643.88 722.5,-649.88 722.5,-649.88 722.5,-674.38 722.5,-674.38 722.5,-680.38 716.5,-686.38 710.5,-686.38"/>
35
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-671.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_snapshot</text>
36
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-658.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">probe_host/net/toolchain</text>
37
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-644.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">probe_repo/env/rf/web</text>
38
38
  </g>
39
39
  <!-- Host&#45;&gt;Snap -->
40
40
  <g id="edge1" class="edge">
41
41
  <title>Host&#45;&gt;Snap</title>
42
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M145.45,-426.96C190.9,-412.49 255.12,-392.06 305.03,-376.18"/>
43
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="305.84,-378.86 312.61,-373.76 304.14,-373.52 305.84,-378.86"/>
42
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M145.28,-787.96C227.97,-775.36 386.34,-748.76 517.75,-712.13 539.51,-706.07 562.74,-698.15 583.77,-690.41"/>
43
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="584.59,-693.1 591.11,-687.68 582.63,-687.85 584.59,-693.1"/>
44
44
  </g>
45
45
  <!-- Net -->
46
46
  <g id="node2" class="node">
47
47
  <title>Net</title>
48
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M144.5,-391C144.5,-391 31,-391 31,-391 25,-391 19,-385 19,-379 19,-379 19,-367 19,-367 19,-361 25,-355 31,-355 31,-355 144.5,-355 144.5,-355 150.5,-355 156.5,-361 156.5,-367 156.5,-367 156.5,-379 156.5,-379 156.5,-385 150.5,-391 144.5,-391"/>
49
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-376.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">net</text>
50
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-362.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">interfaces · listening ports</text>
48
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M144.5,-742.13C144.5,-742.13 31,-742.13 31,-742.13 25,-742.13 19,-736.13 19,-730.13 19,-730.13 19,-718.13 19,-718.13 19,-712.13 25,-706.13 31,-706.13 31,-706.13 144.5,-706.13 144.5,-706.13 150.5,-706.13 156.5,-712.13 156.5,-718.13 156.5,-718.13 156.5,-730.13 156.5,-730.13 156.5,-736.13 150.5,-742.13 144.5,-742.13"/>
49
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-727.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">net</text>
50
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-713.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">interfaces · listening ports</text>
51
51
  </g>
52
52
  <!-- Net&#45;&gt;Snap -->
53
53
  <g id="edge2" class="edge">
54
54
  <title>Net&#45;&gt;Snap</title>
55
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M156.9,-368.1C201.13,-364.92 258.85,-360.78 304.63,-357.49"/>
56
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="304.76,-360.29 312.54,-356.92 304.36,-354.7 304.76,-360.29"/>
55
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M157.17,-717.72C241.9,-709.65 390.59,-695.01 517.75,-680.13 537.4,-677.83 558.61,-675.15 578.33,-672.56"/>
56
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="578.67,-675.34 586.24,-671.52 577.94,-669.79 578.67,-675.34"/>
57
57
  </g>
58
58
  <!-- Tool -->
59
59
  <g id="node3" class="node">
60
60
  <title>Tool</title>
61
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.88,-319C135.88,-319 39.62,-319 39.62,-319 33.62,-319 27.62,-313 27.62,-307 27.62,-307 27.62,-295 27.62,-295 27.62,-289 33.62,-283 39.62,-283 39.62,-283 135.88,-283 135.88,-283 141.88,-283 147.88,-289 147.88,-295 147.88,-295 147.88,-307 147.88,-307 147.88,-313 141.88,-319 135.88,-319"/>
62
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-304.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolchain</text>
63
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-290.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">nmap · burp · msf · git</text>
61
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.88,-670.13C135.88,-670.13 39.62,-670.13 39.62,-670.13 33.62,-670.13 27.62,-664.13 27.62,-658.13 27.62,-658.13 27.62,-646.13 27.62,-646.13 27.62,-640.13 33.62,-634.13 39.62,-634.13 39.62,-634.13 135.88,-634.13 135.88,-634.13 141.88,-634.13 147.88,-640.13 147.88,-646.13 147.88,-646.13 147.88,-658.13 147.88,-658.13 147.88,-664.13 141.88,-670.13 135.88,-670.13"/>
62
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-655.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">toolchain</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-641.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">nmap · burp · msf · git</text>
64
64
  </g>
65
65
  <!-- Drift -->
66
- <g id="node8" class="node">
66
+ <g id="node10" class="node">
67
67
  <title>Drift</title>
68
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M417.75,-292C417.75,-292 346.25,-292 346.25,-292 340.25,-292 334.25,-286 334.25,-280 334.25,-280 334.25,-268 334.25,-268 334.25,-262 340.25,-256 346.25,-256 346.25,-256 417.75,-256 417.75,-256 423.75,-256 429.75,-262 429.75,-268 429.75,-268 429.75,-280 429.75,-280 429.75,-286 423.75,-292 417.75,-292"/>
69
- <text xml:space="preserve" text-anchor="middle" x="382" y="-277.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_drift</text>
70
- <text xml:space="preserve" text-anchor="middle" x="382" y="-263.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">delta vs baseline</text>
68
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M691.38,-602.13C691.38,-602.13 619.88,-602.13 619.88,-602.13 613.88,-602.13 607.88,-596.13 607.88,-590.13 607.88,-590.13 607.88,-578.13 607.88,-578.13 607.88,-572.13 613.88,-566.13 619.88,-566.13 619.88,-566.13 691.38,-566.13 691.38,-566.13 697.38,-566.13 703.38,-572.13 703.38,-578.13 703.38,-578.13 703.38,-590.13 703.38,-590.13 703.38,-596.13 697.38,-602.13 691.38,-602.13"/>
69
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-587.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_drift</text>
70
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-573.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">delta vs baseline</text>
71
71
  </g>
72
72
  <!-- Tool&#45;&gt;Drift -->
73
73
  <g id="edge3" class="edge">
74
74
  <title>Tool&#45;&gt;Drift</title>
75
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M148.24,-295.5C199.56,-290.76 273.2,-283.96 323.83,-279.28"/>
76
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="323.97,-282.08 331.67,-278.56 323.45,-276.5 323.97,-282.08"/>
75
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M148.31,-648.32C231.36,-642.58 386.53,-630.3 517.75,-611.13 544.2,-607.27 573.28,-601.72 597.81,-596.66"/>
76
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="598.13,-599.45 605.39,-595.07 596.99,-593.97 598.13,-599.45"/>
77
77
  </g>
78
78
  <!-- Repo -->
79
79
  <g id="node4" class="node">
80
80
  <title>Repo</title>
81
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M141.12,-247C141.12,-247 34.38,-247 34.38,-247 28.38,-247 22.38,-241 22.38,-235 22.38,-235 22.38,-223 22.38,-223 22.38,-217 28.38,-211 34.38,-211 34.38,-211 141.12,-211 141.12,-211 147.12,-211 153.12,-217 153.12,-223 153.12,-223 153.12,-235 153.12,-235 153.12,-241 147.12,-247 141.12,-247"/>
82
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-232.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">repo · env</text>
83
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-218.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HEAD · dirty · ruby/gem</text>
81
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M141.12,-598.13C141.12,-598.13 34.38,-598.13 34.38,-598.13 28.38,-598.13 22.38,-592.13 22.38,-586.13 22.38,-586.13 22.38,-574.13 22.38,-574.13 22.38,-568.13 28.38,-562.13 34.38,-562.13 34.38,-562.13 141.12,-562.13 141.12,-562.13 147.12,-562.13 153.12,-568.13 153.12,-574.13 153.12,-574.13 153.12,-586.13 153.12,-586.13 153.12,-592.13 147.12,-598.13 141.12,-598.13"/>
82
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-583.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">repo · env</text>
83
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-569.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">HEAD · dirty · ruby/gem</text>
84
84
  </g>
85
85
  <!-- Repo&#45;&gt;Drift -->
86
86
  <g id="edge4" class="edge">
87
87
  <title>Repo&#45;&gt;Drift</title>
88
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M153.61,-238.99C204.58,-246.84 274.9,-257.66 323.79,-265.19"/>
89
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="323.3,-267.95 331.63,-266.4 324.15,-262.41 323.3,-267.95"/>
88
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M153.66,-580.59C265.17,-581.38 491.32,-582.98 597.34,-583.73"/>
89
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="597.23,-586.53 605.25,-583.78 597.27,-580.93 597.23,-586.53"/>
90
90
  </g>
91
91
  <!-- RFhw -->
92
92
  <g id="node5" class="node">
93
93
  <title>RFhw</title>
94
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M136.62,-175.25C136.62,-175.25 38.88,-175.25 38.88,-175.25 32.88,-175.25 26.88,-169.25 26.88,-163.25 26.88,-163.25 26.88,-138.75 26.88,-138.75 26.88,-132.75 32.88,-126.75 38.88,-126.75 38.88,-126.75 136.62,-126.75 136.62,-126.75 142.62,-126.75 148.62,-132.75 148.62,-138.75 148.62,-138.75 148.62,-163.25 148.62,-163.25 148.62,-169.25 142.62,-175.25 136.62,-175.25"/>
95
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-160.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">rf &#160;📡</text>
96
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-147.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">rtl&#45;sdr · hackrf · flipper</text>
97
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-133.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">gqrx sock · serial devs</text>
94
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M136.62,-526.38C136.62,-526.38 38.88,-526.38 38.88,-526.38 32.88,-526.38 26.88,-520.38 26.88,-514.38 26.88,-514.38 26.88,-489.88 26.88,-489.88 26.88,-483.88 32.88,-477.88 38.88,-477.88 38.88,-477.88 136.62,-477.88 136.62,-477.88 142.62,-477.88 148.62,-483.88 148.62,-489.88 148.62,-489.88 148.62,-514.38 148.62,-514.38 148.62,-520.38 142.62,-526.38 136.62,-526.38"/>
95
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-511.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">rf &#160;📡</text>
96
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-498.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">rtl&#45;sdr · hackrf · flipper</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-484.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">gqrx sock · serial devs</text>
98
98
  </g>
99
99
  <!-- Obs -->
100
- <g id="node9" class="node">
100
+ <g id="node11" class="node">
101
101
  <title>Obs</title>
102
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M436.5,-220.25C436.5,-220.25 327.5,-220.25 327.5,-220.25 321.5,-220.25 315.5,-214.25 315.5,-208.25 315.5,-208.25 315.5,-183.75 315.5,-183.75 315.5,-177.75 321.5,-171.75 327.5,-171.75 327.5,-171.75 436.5,-171.75 436.5,-171.75 442.5,-171.75 448.5,-177.75 448.5,-183.75 448.5,-183.75 448.5,-208.25 448.5,-208.25 448.5,-214.25 442.5,-220.25 436.5,-220.25"/>
103
- <text xml:space="preserve" text-anchor="middle" x="382" y="-205.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_observe</text>
104
- <text xml:space="preserve" text-anchor="middle" x="382" y="-192.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">recon · vuln · intel</text>
105
- <text xml:space="preserve" text-anchor="middle" x="382" y="-178.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">target · network · env · rf</text>
102
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M724.75,-530.38C724.75,-530.38 586.5,-530.38 586.5,-530.38 580.5,-530.38 574.5,-524.38 574.5,-518.38 574.5,-518.38 574.5,-493.88 574.5,-493.88 574.5,-487.88 580.5,-481.88 586.5,-481.88 586.5,-481.88 724.75,-481.88 724.75,-481.88 730.75,-481.88 736.75,-487.88 736.75,-493.88 736.75,-493.88 736.75,-518.38 736.75,-518.38 736.75,-524.38 730.75,-530.38 724.75,-530.38"/>
103
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-515.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_observe</text>
104
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-502.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">recon · vuln · intel</text>
105
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-488.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">target · network · env · rf · web</text>
106
106
  </g>
107
107
  <!-- RFhw&#45;&gt;Obs -->
108
108
  <g id="edge5" class="edge">
109
109
  <title>RFhw&#45;&gt;Obs</title>
110
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M149.3,-160.32C194.51,-167.28 256.58,-176.84 305.1,-184.31"/>
111
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="304.65,-187.08 312.98,-185.53 305.5,-181.54 304.65,-187.08"/>
112
- <text xml:space="preserve" text-anchor="middle" x="223.75" y="-175.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">probe_rf</text>
110
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M149.31,-502.56C248.91,-503.27 447.82,-504.67 564.16,-505.49"/>
111
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.13,-508.29 572.15,-505.55 564.17,-502.69 564.13,-508.29"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="327.75" y="-506.28" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">probe_rf</text>
113
113
  </g>
114
- <!-- Feeds -->
114
+ <!-- Web -->
115
115
  <g id="node6" class="node">
116
+ <title>Web</title>
117
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M144.88,-370.38C144.88,-370.38 30.62,-370.38 30.62,-370.38 24.62,-370.38 18.62,-364.38 18.62,-358.38 18.62,-358.38 18.62,-333.88 18.62,-333.88 18.62,-327.88 24.62,-321.88 30.62,-321.88 30.62,-321.88 144.88,-321.88 144.88,-321.88 150.88,-321.88 156.88,-327.88 156.88,-333.88 156.88,-333.88 156.88,-358.38 156.88,-358.38 156.88,-364.38 150.88,-370.38 144.88,-370.38"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-355.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">web &#160;🌐</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-342.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">anchors · targets</text>
120
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-328.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">rendered DOM · TLS cert</text>
121
+ </g>
122
+ <!-- TB -->
123
+ <g id="node8" class="node">
124
+ <title>TB</title>
125
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M389,-352.38C389,-352.38 266.5,-352.38 266.5,-352.38 260.5,-352.38 254.5,-346.38 254.5,-340.38 254.5,-340.38 254.5,-315.88 254.5,-315.88 254.5,-309.88 260.5,-303.88 266.5,-303.88 266.5,-303.88 389,-303.88 389,-303.88 395,-303.88 401,-309.88 401,-315.88 401,-315.88 401,-340.38 401,-340.38 401,-346.38 395,-352.38 389,-352.38"/>
126
+ <text xml:space="preserve" text-anchor="middle" x="327.75" y="-337.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PWN::Plugins::</text>
127
+ <text xml:space="preserve" text-anchor="middle" x="327.75" y="-324.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">TransparentBrowser</text>
128
+ <text xml:space="preserve" text-anchor="middle" x="327.75" y="-310.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:headless (→ :rest fallback)</text>
129
+ </g>
130
+ <!-- Web&#45;&gt;TB -->
131
+ <g id="edge7" class="edge">
132
+ <title>Web&#45;&gt;TB</title>
133
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M157.27,-340.95C184.3,-338.91 215.58,-336.54 243.87,-334.4"/>
134
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="244,-337.2 251.77,-333.8 243.58,-331.62 244,-337.2"/>
135
+ </g>
136
+ <!-- Feeds -->
137
+ <g id="node7" class="node">
116
138
  <title>Feeds</title>
117
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M147.5,-91C147.5,-91 28,-91 28,-91 22,-91 16,-85 16,-79 16,-79 16,-67 16,-67 16,-61 22,-55 28,-55 28,-55 147.5,-55 147.5,-55 153.5,-55 159.5,-61 159.5,-67 159.5,-67 159.5,-79 159.5,-79 159.5,-85 153.5,-91 147.5,-91"/>
118
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-76.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">intel feeds</text>
119
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-62.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">NVD · CIRCL · Exploit&#45;DB</text>
139
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M147.5,-442.13C147.5,-442.13 28,-442.13 28,-442.13 22,-442.13 16,-436.13 16,-430.13 16,-430.13 16,-418.13 16,-418.13 16,-412.13 22,-406.13 28,-406.13 28,-406.13 147.5,-406.13 147.5,-406.13 153.5,-406.13 159.5,-412.13 159.5,-418.13 159.5,-418.13 159.5,-430.13 159.5,-430.13 159.5,-436.13 153.5,-442.13 147.5,-442.13"/>
140
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-427.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">intel feeds</text>
141
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-413.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">NVD · CIRCL · Exploit&#45;DB</text>
120
142
  </g>
121
143
  <!-- Intel -->
122
- <g id="node10" class="node">
144
+ <g id="node12" class="node">
123
145
  <title>Intel</title>
124
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M426.75,-136C426.75,-136 337.25,-136 337.25,-136 331.25,-136 325.25,-130 325.25,-124 325.25,-124 325.25,-112 325.25,-112 325.25,-106 331.25,-100 337.25,-100 337.25,-100 426.75,-100 426.75,-100 432.75,-100 438.75,-106 438.75,-112 438.75,-112 438.75,-124 438.75,-124 438.75,-130 432.75,-136 426.75,-136"/>
125
- <text xml:space="preserve" text-anchor="middle" x="382" y="-121.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_intel</text>
126
- <text xml:space="preserve" text-anchor="middle" x="382" y="-107.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">CVE / exploit lookup</text>
146
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M700.38,-446.13C700.38,-446.13 610.88,-446.13 610.88,-446.13 604.88,-446.13 598.88,-440.13 598.88,-434.13 598.88,-434.13 598.88,-422.13 598.88,-422.13 598.88,-416.13 604.88,-410.13 610.88,-410.13 610.88,-410.13 700.38,-410.13 700.38,-410.13 706.38,-410.13 712.38,-416.13 712.38,-422.13 712.38,-422.13 712.38,-434.13 712.38,-434.13 712.38,-440.13 706.38,-446.13 700.38,-446.13"/>
147
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-431.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_intel</text>
148
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-417.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">CVE / exploit lookup</text>
127
149
  </g>
128
150
  <!-- Feeds&#45;&gt;Intel -->
129
151
  <g id="edge6" class="edge">
130
152
  <title>Feeds&#45;&gt;Intel</title>
131
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M159.87,-83.95C207.19,-91.24 268.91,-100.74 315.12,-107.86"/>
132
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="314.45,-110.59 322.78,-109.04 315.3,-105.05 314.45,-110.59"/>
153
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M160.13,-424.64C270.63,-425.42 481.49,-426.91 588.62,-427.67"/>
154
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="588.36,-430.47 596.38,-427.72 588.4,-424.87 588.36,-430.47"/>
155
+ </g>
156
+ <!-- TB&#45;&gt;Snap -->
157
+ <g id="edge8" class="edge">
158
+ <title>TB&#45;&gt;Snap</title>
159
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M341.97,-353.17C372.35,-408.51 452.34,-542.44 553.62,-620.13 561.45,-626.13 570.25,-631.43 579.31,-636.05"/>
160
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="577.87,-638.47 586.29,-639.43 580.31,-633.42 577.87,-638.47"/>
161
+ <text xml:space="preserve" text-anchor="middle" x="482.88" y="-600.18" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">probe_web</text>
162
+ <text xml:space="preserve" text-anchor="middle" x="482.88" y="-589.68" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">(opt&#45;in)</text>
163
+ </g>
164
+ <!-- Watch -->
165
+ <g id="node13" class="node">
166
+ <title>Watch</title>
167
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M712.75,-374.38C712.75,-374.38 598.5,-374.38 598.5,-374.38 592.5,-374.38 586.5,-368.38 586.5,-362.38 586.5,-362.38 586.5,-337.88 586.5,-337.88 586.5,-331.88 592.5,-325.88 598.5,-325.88 598.5,-325.88 712.75,-325.88 712.75,-325.88 718.75,-325.88 724.75,-331.88 724.75,-337.88 724.75,-337.88 724.75,-362.38 724.75,-362.38 724.75,-368.38 718.75,-374.38 712.75,-374.38"/>
168
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-359.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_watch</text>
169
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-346.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">render → DOM SHA&#45;256</text>
170
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-332.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">screenshot · TLS fp</text>
171
+ </g>
172
+ <!-- TB&#45;&gt;Watch -->
173
+ <g id="edge9" class="edge">
174
+ <title>TB&#45;&gt;Watch</title>
175
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M401.83,-320.32C417.07,-318.99 433.05,-317.82 448,-317.13 478.97,-315.71 486.97,-313.48 517.75,-317.13 536.96,-319.42 557.37,-323.44 576.4,-327.91"/>
176
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="575.58,-330.59 584.01,-329.75 576.89,-325.15 575.58,-330.59"/>
177
+ <text xml:space="preserve" text-anchor="middle" x="482.88" y="-329.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">goto · text</text>
178
+ <text xml:space="preserve" text-anchor="middle" x="482.88" y="-319.08" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">screenshot</text>
179
+ </g>
180
+ <!-- Verify -->
181
+ <g id="node14" class="node">
182
+ <title>Verify</title>
183
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M734.5,-289.38C734.5,-289.38 576.75,-289.38 576.75,-289.38 570.75,-289.38 564.75,-283.38 564.75,-277.38 564.75,-277.38 564.75,-252.88 564.75,-252.88 564.75,-246.88 570.75,-240.88 576.75,-240.88 576.75,-240.88 734.5,-240.88 734.5,-240.88 740.5,-240.88 746.5,-246.88 746.5,-252.88 746.5,-252.88 746.5,-277.38 746.5,-277.38 746.5,-283.38 740.5,-289.38 734.5,-289.38"/>
184
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-274.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_verify</text>
185
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-261.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:cve · :version · :doc · :generic</text>
186
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-247.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ :confirmed | :refuted | :unknown</text>
187
+ </g>
188
+ <!-- TB&#45;&gt;Verify -->
189
+ <g id="edge10" class="edge">
190
+ <title>TB&#45;&gt;Verify</title>
191
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M389.46,-302.94C407.97,-296.16 428.57,-289.51 448,-285.13 481.79,-277.53 519.33,-272.82 553.04,-269.9"/>
192
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="553.08,-272.7 560.82,-269.26 552.62,-267.12 553.08,-272.7"/>
193
+ <text xml:space="preserve" text-anchor="middle" x="482.88" y="-297.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">render</text>
194
+ <text xml:space="preserve" text-anchor="middle" x="482.88" y="-287.08" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">canonical source</text>
133
195
  </g>
134
196
  <!-- Store -->
135
- <g id="node12" class="node">
197
+ <g id="node16" class="node">
136
198
  <title>Store</title>
137
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M729.12,-215.69C729.12,-218.1 706.21,-220.06 678,-220.06 649.79,-220.06 626.88,-218.1 626.88,-215.69 626.88,-215.69 626.88,-176.31 626.88,-176.31 626.88,-173.9 649.79,-171.94 678,-171.94 706.21,-171.94 729.12,-173.9 729.12,-176.31 729.12,-176.31 729.12,-215.69 729.12,-215.69"/>
138
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M729.12,-215.69C729.12,-213.27 706.21,-211.31 678,-211.31 649.79,-211.31 626.88,-213.27 626.88,-215.69"/>
139
- <text xml:space="preserve" text-anchor="middle" x="678" y="-199.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/</text>
140
- <text xml:space="preserve" text-anchor="middle" x="678" y="-185.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
199
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1046.25,-478.82C1046.25,-481.24 1023.33,-483.2 995.12,-483.2 966.92,-483.2 944,-481.24 944,-478.82 944,-478.82 944,-439.45 944,-439.45 944,-437.03 966.92,-435.07 995.12,-435.07 1023.33,-435.07 1046.25,-437.03 1046.25,-439.45 1046.25,-439.45 1046.25,-478.82 1046.25,-478.82"/>
200
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M1046.25,-478.82C1046.25,-476.41 1023.33,-474.45 995.12,-474.45 966.92,-474.45 944,-476.41 944,-478.82"/>
201
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-462.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/</text>
202
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-448.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
141
203
  </g>
142
204
  <!-- Snap&#45;&gt;Store -->
143
- <g id="edge7" class="edge">
205
+ <g id="edge11" class="edge">
144
206
  <title>Snap&#45;&gt;Store</title>
145
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M447.57,-327.07C460.13,-321.76 473.09,-315.95 485,-310 536.91,-284.07 593.76,-249.49 632.02,-225.24"/>
146
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="633.47,-227.64 638.71,-220.98 630.46,-222.91 633.47,-227.64"/>
207
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M721.21,-637.24C733.77,-631.92 746.73,-626.1 758.62,-620.13 811.23,-593.75 823.53,-585.15 872.25,-552.13 901.35,-532.42 932.86,-508.29 956.55,-489.55"/>
208
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="958.21,-491.81 962.73,-484.64 954.73,-487.43 958.21,-491.81"/>
147
209
  </g>
148
210
  <!-- Drift&#45;&gt;Store -->
149
- <g id="edge8" class="edge">
211
+ <g id="edge12" class="edge">
150
212
  <title>Drift&#45;&gt;Store</title>
151
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M430.24,-261.47C480.95,-248.01 561.65,-226.6 616.87,-211.95"/>
152
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="617.26,-214.75 624.28,-209.99 615.83,-209.33 617.26,-214.75"/>
213
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M704.06,-568.85C747.96,-554.47 814.91,-531.94 872.25,-510.13 892.61,-502.39 914.63,-493.37 934.29,-485.1"/>
214
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="935.34,-487.69 941.62,-481.99 933.16,-482.53 935.34,-487.69"/>
153
215
  </g>
154
216
  <!-- Obs&#45;&gt;Store -->
155
- <g id="edge9" class="edge">
217
+ <g id="edge13" class="edge">
156
218
  <title>Obs&#45;&gt;Store</title>
157
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M448.98,-196C499.19,-196 567.74,-196 616.53,-196"/>
158
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="616.35,-198.8 624.35,-196 616.35,-193.2 616.35,-198.8"/>
219
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M737.04,-494.94C797.55,-486.51 879.17,-475.14 934.07,-467.5"/>
220
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="934.17,-470.31 941.71,-466.43 933.4,-464.76 934.17,-470.31"/>
159
221
  </g>
160
222
  <!-- Intel&#45;&gt;Store -->
161
- <g id="edge10" class="edge">
223
+ <g id="edge14" class="edge">
162
224
  <title>Intel&#45;&gt;Store</title>
163
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M439.34,-132.95C490.19,-146.44 564.8,-166.23 616.82,-180.03"/>
164
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="615.9,-182.69 624.35,-182.03 617.34,-177.27 615.9,-182.69"/>
165
- <text xml:space="preserve" text-anchor="middle" x="546.12" y="-168.23" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record:true</text>
225
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M712.74,-433.29C773.76,-438.89 870.96,-447.82 933.65,-453.58"/>
226
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="933.22,-456.35 941.45,-454.29 933.73,-450.77 933.22,-456.35"/>
227
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-449.27" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">record:true</text>
228
+ </g>
229
+ <!-- Watch&#45;&gt;Store -->
230
+ <g id="edge15" class="edge">
231
+ <title>Watch&#45;&gt;Store</title>
232
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M725.33,-372.32C786.58,-392.11 875.36,-420.78 933.89,-439.68"/>
233
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="933.03,-442.34 941.5,-442.14 934.75,-437.01 933.03,-442.34"/>
234
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-419.55" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">category::web</text>
235
+ </g>
236
+ <!-- Shots -->
237
+ <g id="node17" class="node">
238
+ <title>Shots</title>
239
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1054.5,-380.82C1054.5,-383.24 1027.89,-385.2 995.12,-385.2 962.36,-385.2 935.75,-383.24 935.75,-380.82 935.75,-380.82 935.75,-341.45 935.75,-341.45 935.75,-339.03 962.36,-337.07 995.12,-337.07 1027.89,-337.07 1054.5,-339.03 1054.5,-341.45 1054.5,-341.45 1054.5,-380.82 1054.5,-380.82"/>
240
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M1054.5,-380.82C1054.5,-378.41 1027.89,-376.45 995.12,-376.45 962.36,-376.45 935.75,-378.41 935.75,-380.82"/>
241
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-364.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/extrospection/</text>
242
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-350.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">web/*.png</text>
243
+ </g>
244
+ <!-- Watch&#45;&gt;Shots -->
245
+ <g id="edge16" class="edge">
246
+ <title>Watch&#45;&gt;Shots</title>
247
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M725.33,-352.37C783.63,-354.27 866.87,-356.99 925.23,-358.89"/>
248
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="925.04,-361.68 933.13,-359.15 925.22,-356.09 925.04,-361.68"/>
249
+ </g>
250
+ <!-- Verify&#45;&gt;Store -->
251
+ <g id="edge18" class="edge">
252
+ <title>Verify&#45;&gt;Store</title>
253
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M718.13,-290.29C731.55,-295.99 745.62,-302.14 758.62,-308.13 809.93,-331.79 824.76,-334.53 872.25,-365.13 894.83,-379.68 898.05,-386.64 919.25,-403.13 930.18,-411.63 942.14,-420.69 953.23,-428.98"/>
254
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="951.46,-431.15 959.54,-433.69 954.8,-426.66 951.46,-431.15"/>
255
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-377.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:confirmed</text>
256
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-367.08" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:intel obs (ttl 30d)</text>
257
+ </g>
258
+ <!-- Mist -->
259
+ <g id="node19" class="node">
260
+ <title>Mist</title>
261
+ <path fill="#fca5a5" stroke="#334155" stroke-width="2" d="M1048.5,-298.38C1048.5,-298.38 941.75,-298.38 941.75,-298.38 935.75,-298.38 929.75,-292.38 929.75,-286.38 929.75,-286.38 929.75,-261.88 929.75,-261.88 929.75,-255.88 935.75,-249.88 941.75,-249.88 941.75,-249.88 1048.5,-249.88 1048.5,-249.88 1054.5,-249.88 1060.5,-255.88 1060.5,-261.88 1060.5,-261.88 1060.5,-286.38 1060.5,-286.38 1060.5,-292.38 1054.5,-298.38 1048.5,-298.38"/>
262
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-283.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Mistakes.record</text>
263
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-270.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(tool:&#39;assumption&#39;)</text>
264
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-256.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ KNOWN MISTAKES</text>
265
+ </g>
266
+ <!-- Verify&#45;&gt;Mist -->
267
+ <g id="edge17" class="edge">
268
+ <title>Verify&#45;&gt;Mist</title>
269
+ <path fill="none" stroke="#fb7185" stroke-width="2" d="M747.41,-262.49C785.93,-261.89 831.3,-261.87 872.25,-263.63 887.1,-264.27 902.95,-265.35 918.13,-266.57"/>
270
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="917.82,-269.36 926.03,-267.23 918.29,-263.77 917.82,-269.36"/>
271
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-265.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">:refuted</text>
272
+ </g>
273
+ <!-- Mem -->
274
+ <g id="node20" class="node">
275
+ <title>Mem</title>
276
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1059,-213.38C1059,-213.38 931.25,-213.38 931.25,-213.38 925.25,-213.38 919.25,-207.38 919.25,-201.38 919.25,-201.38 919.25,-176.88 919.25,-176.88 919.25,-170.88 925.25,-164.88 931.25,-164.88 931.25,-164.88 1059,-164.88 1059,-164.88 1065,-164.88 1071,-170.88 1071,-176.88 1071,-176.88 1071,-201.38 1071,-201.38 1071,-207.38 1065,-213.38 1059,-213.38"/>
277
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-198.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PWN::Memory :fact</text>
278
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-185.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">[UNVERIFIED yyyy&#45;mm&#45;dd]</text>
279
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-171.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(revalidate_memory)</text>
280
+ </g>
281
+ <!-- Verify&#45;&gt;Mem -->
282
+ <g id="edge19" class="edge">
283
+ <title>Verify&#45;&gt;Mem</title>
284
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M727.94,-239.9C738.65,-234.76 749.24,-228.83 758.62,-222.13 777.55,-208.62 772.27,-192.63 793.5,-183.13 829.12,-167.2 871.97,-166.36 908.91,-170.45"/>
285
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="908.43,-173.21 916.71,-171.41 909.11,-167.65 908.43,-173.21"/>
286
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-195.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">revalidate_memory</text>
287
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-185.08" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">mark stale :fact</text>
166
288
  </g>
167
289
  <!-- Corr -->
168
- <g id="node11" class="node">
290
+ <g id="node15" class="node">
169
291
  <title>Corr</title>
170
- <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M420,-64.25C420,-64.25 344,-64.25 344,-64.25 338,-64.25 332,-58.25 332,-52.25 332,-52.25 332,-27.75 332,-27.75 332,-21.75 338,-15.75 344,-15.75 344,-15.75 420,-15.75 420,-15.75 426,-15.75 432,-21.75 432,-27.75 432,-27.75 432,-52.25 432,-52.25 432,-58.25 426,-64.25 420,-64.25"/>
171
- <text xml:space="preserve" text-anchor="middle" x="382" y="-49.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_correlate</text>
172
- <text xml:space="preserve" text-anchor="middle" x="382" y="-36.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">join with Learning</text>
173
- <text xml:space="preserve" text-anchor="middle" x="382" y="-22.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">+ Mistakes</text>
292
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M703.38,-204.38C703.38,-204.38 607.88,-204.38 607.88,-204.38 601.88,-204.38 595.88,-198.38 595.88,-192.38 595.88,-192.38 595.88,-167.88 595.88,-167.88 595.88,-161.88 601.88,-155.88 607.88,-155.88 607.88,-155.88 703.38,-155.88 703.38,-155.88 709.38,-155.88 715.38,-161.88 715.38,-167.88 715.38,-167.88 715.38,-192.38 715.38,-192.38 715.38,-198.38 709.38,-204.38 703.38,-204.38"/>
293
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-189.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">extro_correlate</text>
294
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-176.43" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">join with Learning</text>
295
+ <text xml:space="preserve" text-anchor="middle" x="655.62" y="-162.93" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">+ Mistakes + Memory</text>
174
296
  </g>
175
297
  <!-- Prompt -->
176
- <g id="node13" class="node">
298
+ <g id="node18" class="node">
177
299
  <title>Prompt</title>
178
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M728.75,-92C728.75,-92 627.25,-92 627.25,-92 621.25,-92 615.25,-86 615.25,-80 615.25,-80 615.25,-68 615.25,-68 615.25,-62 621.25,-56 627.25,-56 627.25,-56 728.75,-56 728.75,-56 734.75,-56 740.75,-62 740.75,-68 740.75,-68 740.75,-80 740.75,-80 740.75,-86 734.75,-92 728.75,-92"/>
179
- <text xml:space="preserve" text-anchor="middle" x="678" y="-77.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">EXTROSPECTION</text>
180
- <text xml:space="preserve" text-anchor="middle" x="678" y="-63.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">block in system prompt</text>
300
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1045.88,-129.13C1045.88,-129.13 944.38,-129.13 944.38,-129.13 938.38,-129.13 932.38,-123.13 932.38,-117.13 932.38,-117.13 932.38,-105.13 932.38,-105.13 932.38,-99.13 938.38,-93.13 944.38,-93.13 944.38,-93.13 1045.88,-93.13 1045.88,-93.13 1051.88,-93.13 1057.88,-99.13 1057.88,-105.13 1057.88,-105.13 1057.88,-117.13 1057.88,-117.13 1057.88,-123.13 1051.88,-129.13 1045.88,-129.13"/>
301
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-114.18" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">EXTROSPECTION</text>
302
+ <text xml:space="preserve" text-anchor="middle" x="995.12" y="-100.68" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">block in system prompt</text>
181
303
  </g>
182
304
  <!-- Corr&#45;&gt;Prompt -->
183
- <g id="edge11" class="edge">
305
+ <g id="edge20" class="edge">
184
306
  <title>Corr&#45;&gt;Prompt</title>
185
- <path fill="none" stroke="#a78bfa" stroke-width="2" d="M432.87,-45.77C479.77,-51.19 550.55,-59.38 603.84,-65.54"/>
186
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="603.31,-68.3 611.58,-66.43 603.96,-62.73 603.31,-68.3"/>
187
- <text xml:space="preserve" text-anchor="middle" x="546.12" y="-63" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
307
+ <path fill="none" stroke="#a78bfa" stroke-width="2" d="M716.35,-155.48C740.01,-146.64 767.67,-137.44 793.5,-131.63 835.34,-122.23 883.07,-117.13 921.48,-114.37"/>
308
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="921.24,-117.19 929.03,-113.86 920.86,-111.6 921.24,-117.19"/>
309
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-133.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
188
310
  </g>
189
311
  <!-- Store&#45;&gt;Corr -->
190
- <g id="edge13" class="edge">
312
+ <g id="edge22" class="edge">
191
313
  <title>Store&#45;&gt;Corr</title>
192
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M659.23,-171.26C629.26,-129.6 571.57,-49.77 568.25,-48 529.89,-27.53 480.45,-26.44 442.29,-29.97"/>
193
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="442.47,-27.13 434.8,-30.75 443.05,-32.7 442.47,-27.13"/>
314
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M951.61,-435.93C939.34,-427.21 927.15,-416.19 919.25,-403.13 851.01,-290.27 972.62,-195.69 872.25,-110.13 820.43,-65.97 740.18,-113.46 693.59,-148.9"/>
315
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="692.01,-146.58 687.41,-153.7 695.44,-151 692.01,-146.58"/>
194
316
  </g>
195
317
  <!-- Store&#45;&gt;Prompt -->
196
- <g id="edge12" class="edge">
318
+ <g id="edge21" class="edge">
197
319
  <title>Store&#45;&gt;Prompt</title>
198
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M678,-171.38C678,-151.44 678,-123.33 678,-102.43"/>
199
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="680.8,-102.5 678,-94.5 675.2,-102.5 680.8,-102.5"/>
200
- <text xml:space="preserve" text-anchor="middle" x="669.75" y="-128.67" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
320
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M954.46,-435.47C941.87,-426.61 928.81,-415.61 919.25,-403.13 867.09,-335.05 864.92,-307.67 849.04,-223.38 840.93,-180.34 883.31,-151.22 924.47,-133.45"/>
321
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="925.35,-136.12 931.68,-130.48 923.21,-130.95 925.35,-136.12"/>
322
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-214.83" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
323
+ </g>
324
+ <!-- Mem&#45;&gt;Corr -->
325
+ <g id="edge23" class="edge">
326
+ <title>Mem&#45;&gt;Corr</title>
327
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" stroke-dasharray="5,2" d="M938.64,-164.25C931.46,-159.33 924.71,-153.64 919.25,-147.13 878.67,-98.8 923.74,-49.64 872.25,-13.13 797.18,40.09 711.81,-83.76 675.05,-146.49"/>
328
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="672.75,-144.88 671.18,-153.21 677.6,-147.68 672.75,-144.88"/>
329
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-25.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">rule (f)</text>
330
+ <text xml:space="preserve" text-anchor="middle" x="832.88" y="-15.08" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">stale :fact</text>
201
331
  </g>
202
332
  </g>
203
333
  </svg>