pwn 0.5.618 → 0.5.620

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +14 -6
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/Agent-Tool-Registry.md +3 -3
  6. data/documentation/Diagrams.md +6 -2
  7. data/documentation/Extrospection.md +30 -11
  8. data/documentation/Home.md +5 -4
  9. data/documentation/How-PWN-Works.md +7 -4
  10. data/documentation/Mistakes.md +96 -0
  11. data/documentation/Persistence.md +3 -1
  12. data/documentation/SDR.md +23 -5
  13. data/documentation/Skills-Memory-Learning.md +15 -5
  14. data/documentation/diagrams/agent-tool-registry.svg +94 -92
  15. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  16. data/documentation/diagrams/dot/extrospection-world-awareness.dot +9 -7
  17. data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
  18. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  19. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  20. data/documentation/diagrams/dot/persistence-filesystem.dot +3 -2
  21. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +19 -7
  22. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  23. data/documentation/diagrams/extrospection-world-awareness.svg +111 -93
  24. data/documentation/diagrams/memory-skills-detailed.svg +146 -97
  25. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  26. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  27. data/documentation/diagrams/persistence-filesystem.svg +77 -62
  28. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +217 -149
  29. data/documentation/diagrams/sdr-radio-flow.svg +76 -56
  30. data/documentation/pwn-ai-Agent.md +28 -15
  31. data/lib/pwn/ai/agent/extrospection.rb +65 -6
  32. data/lib/pwn/ai/agent/learning.rb +67 -7
  33. data/lib/pwn/ai/agent/loop.rb +72 -6
  34. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  35. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  36. data/lib/pwn/ai/agent/tools/extrospection.rb +2 -2
  37. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  38. data/lib/pwn/ai/agent.rb +1 -0
  39. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  40. data/lib/pwn/sdr/decoder/adsb.rb +101 -0
  41. data/lib/pwn/sdr/decoder/apt.rb +75 -0
  42. data/lib/pwn/sdr/decoder/bluetooth.rb +78 -0
  43. data/lib/pwn/sdr/decoder/dect.rb +84 -0
  44. data/lib/pwn/sdr/decoder/gps.rb +83 -0
  45. data/lib/pwn/sdr/decoder/gsm.rb +50 -29
  46. data/lib/pwn/sdr/decoder/iridium.rb +81 -0
  47. data/lib/pwn/sdr/decoder/lora.rb +87 -0
  48. data/lib/pwn/sdr/decoder/lte.rb +88 -0
  49. data/lib/pwn/sdr/decoder/morse.rb +64 -0
  50. data/lib/pwn/sdr/decoder/p25.rb +71 -0
  51. data/lib/pwn/sdr/decoder/pager.rb +77 -0
  52. data/lib/pwn/sdr/decoder/pocsag.rb +26 -11
  53. data/lib/pwn/sdr/decoder/rfid.rb +88 -0
  54. data/lib/pwn/sdr/decoder/rtl433.rb +95 -0
  55. data/lib/pwn/sdr/decoder/rtty.rb +66 -0
  56. data/lib/pwn/sdr/decoder/wifi.rb +98 -0
  57. data/lib/pwn/sdr/decoder/zigbee.rb +96 -0
  58. data/lib/pwn/sdr/decoder.rb +67 -7
  59. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  60. data/lib/pwn/sdr/gqrx.rb +186 -95
  61. data/lib/pwn/version.rb +1 -1
  62. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  63. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  64. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  65. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  66. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  67. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  68. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  69. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  70. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  71. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  72. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  73. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  74. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  75. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  76. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  77. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  78. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  79. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  80. data/third_party/pwn_rdoc.jsonl +92 -3
  81. metadata +44 -6
  82. data/README.md.bak +0 -200
@@ -4,182 +4,200 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Extrospection Pages: 1 -->
7
- <svg width="794pt" height="584pt"
8
- viewBox="0.00 0.00 794.00 584.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 541.2)">
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)">
10
10
  <title>PWN_Extrospection</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-541.2 750.45,-541.2 750.45,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="107.25" y="-476" 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="255" y="-464.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">snapshot · drift · observe · intel · correlate</text>
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>
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,-80C20,-80 155.5,-80 155.5,-80 161.5,-80 167.5,-86 167.5,-92 167.5,-92 167.5,-439 167.5,-439 167.5,-445 161.5,-451 155.5,-451 155.5,-451 20,-451 20,-451 14,-451 8,-445 8,-439 8,-439 8,-92 8,-92 8,-86 14,-80 20,-80"/>
17
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-428" 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,-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>
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="M258.5,-8C258.5,-8 439.5,-8 439.5,-8 445.5,-8 451.5,-14 451.5,-20 451.5,-20 451.5,-367 451.5,-367 451.5,-373 445.5,-379 439.5,-379 439.5,-379 258.5,-379 258.5,-379 252.5,-379 246.5,-373 246.5,-367 246.5,-367 246.5,-20 246.5,-20 246.5,-14 252.5,-8 258.5,-8"/>
22
- <text xml:space="preserve" text-anchor="middle" x="349" y="-356" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Extrospection Engine</text>
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>
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,-412C132.88,-412 42.62,-412 42.62,-412 36.62,-412 30.62,-406 30.62,-400 30.62,-400 30.62,-388 30.62,-388 30.62,-382 36.62,-376 42.62,-376 42.62,-376 132.88,-376 132.88,-376 138.88,-376 144.88,-382 144.88,-388 144.88,-388 144.88,-400 144.88,-400 144.88,-406 138.88,-412 132.88,-412"/>
28
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-397.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="-383.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,-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>
30
30
  </g>
31
31
  <!-- Snap -->
32
- <g id="node6" class="node">
32
+ <g id="node7" class="node">
33
33
  <title>Snap</title>
34
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M381.25,-340C381.25,-340 315.75,-340 315.75,-340 309.75,-340 303.75,-334 303.75,-328 303.75,-328 303.75,-316 303.75,-316 303.75,-310 309.75,-304 315.75,-304 315.75,-304 381.25,-304 381.25,-304 387.25,-304 393.25,-310 393.25,-316 393.25,-316 393.25,-328 393.25,-328 393.25,-334 387.25,-340 381.25,-340"/>
35
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-325.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_snapshot</text>
36
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-311.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">fingerprint host</text>
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>
37
38
  </g>
38
39
  <!-- Host&#45;&gt;Snap -->
39
40
  <g id="edge1" class="edge">
40
41
  <title>Host&#45;&gt;Snap</title>
41
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M145.53,-378.2C189.65,-365.92 250.42,-349.01 293.75,-336.96"/>
42
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="294.42,-339.68 301.38,-334.83 292.92,-334.28 294.42,-339.68"/>
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"/>
43
44
  </g>
44
45
  <!-- Net -->
45
46
  <g id="node2" class="node">
46
47
  <title>Net</title>
47
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M144.5,-340C144.5,-340 31,-340 31,-340 25,-340 19,-334 19,-328 19,-328 19,-316 19,-316 19,-310 25,-304 31,-304 31,-304 144.5,-304 144.5,-304 150.5,-304 156.5,-310 156.5,-316 156.5,-316 156.5,-328 156.5,-328 156.5,-334 150.5,-340 144.5,-340"/>
48
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-325.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">net</text>
49
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-311.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,-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>
50
51
  </g>
51
52
  <!-- Net&#45;&gt;Snap -->
52
53
  <g id="edge2" class="edge">
53
54
  <title>Net&#45;&gt;Snap</title>
54
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M157.07,-322C199.72,-322 253.86,-322 293.5,-322"/>
55
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="293.28,-324.8 301.28,-322 293.28,-319.2 293.28,-324.8"/>
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"/>
56
57
  </g>
57
58
  <!-- Tool -->
58
59
  <g id="node3" class="node">
59
60
  <title>Tool</title>
60
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.88,-268C135.88,-268 39.62,-268 39.62,-268 33.62,-268 27.62,-262 27.62,-256 27.62,-256 27.62,-244 27.62,-244 27.62,-238 33.62,-232 39.62,-232 39.62,-232 135.88,-232 135.88,-232 141.88,-232 147.88,-238 147.88,-244 147.88,-244 147.88,-256 147.88,-256 147.88,-262 141.88,-268 135.88,-268"/>
61
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-253.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolchain</text>
62
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-239.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,-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>
63
64
  </g>
64
65
  <!-- Drift -->
65
- <g id="node7" class="node">
66
+ <g id="node8" class="node">
66
67
  <title>Drift</title>
67
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M384.25,-268C384.25,-268 312.75,-268 312.75,-268 306.75,-268 300.75,-262 300.75,-256 300.75,-256 300.75,-244 300.75,-244 300.75,-238 306.75,-232 312.75,-232 312.75,-232 384.25,-232 384.25,-232 390.25,-232 396.25,-238 396.25,-244 396.25,-244 396.25,-256 396.25,-256 396.25,-262 390.25,-268 384.25,-268"/>
68
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-253.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_drift</text>
69
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-239.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="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>
70
71
  </g>
71
72
  <!-- Tool&#45;&gt;Drift -->
72
73
  <g id="edge3" class="edge">
73
74
  <title>Tool&#45;&gt;Drift</title>
74
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M148.44,-250C191.13,-250 248.26,-250 290.36,-250"/>
75
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="290.22,-252.8 298.22,-250 290.22,-247.2 290.22,-252.8"/>
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"/>
76
77
  </g>
77
78
  <!-- Repo -->
78
79
  <g id="node4" class="node">
79
80
  <title>Repo</title>
80
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.12,-196C135.12,-196 40.38,-196 40.38,-196 34.38,-196 28.38,-190 28.38,-184 28.38,-184 28.38,-172 28.38,-172 28.38,-166 34.38,-160 40.38,-160 40.38,-160 135.12,-160 135.12,-160 141.12,-160 147.12,-166 147.12,-172 147.12,-172 147.12,-184 147.12,-184 147.12,-190 141.12,-196 135.12,-196"/>
81
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-181.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">repo</text>
82
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-167.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HEAD · dirty · branch</text>
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>
83
84
  </g>
84
85
  <!-- Repo&#45;&gt;Drift -->
85
86
  <g id="edge4" class="edge">
86
87
  <title>Repo&#45;&gt;Drift</title>
87
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M147.79,-194.43C190.78,-206.39 248.65,-222.49 291.03,-234.29"/>
88
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="290.01,-236.91 298.47,-236.36 291.51,-231.51 290.01,-236.91"/>
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"/>
89
90
  </g>
90
- <!-- Feeds -->
91
+ <!-- RFhw -->
91
92
  <g id="node5" class="node">
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>
98
+ </g>
99
+ <!-- Obs -->
100
+ <g id="node9" class="node">
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>
106
+ </g>
107
+ <!-- RFhw&#45;&gt;Obs -->
108
+ <g id="edge5" class="edge">
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>
113
+ </g>
114
+ <!-- Feeds -->
115
+ <g id="node6" class="node">
92
116
  <title>Feeds</title>
93
- <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M147.5,-124C147.5,-124 28,-124 28,-124 22,-124 16,-118 16,-112 16,-112 16,-100 16,-100 16,-94 22,-88 28,-88 28,-88 147.5,-88 147.5,-88 153.5,-88 159.5,-94 159.5,-100 159.5,-100 159.5,-112 159.5,-112 159.5,-118 153.5,-124 147.5,-124"/>
94
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-109.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">intel feeds</text>
95
- <text xml:space="preserve" text-anchor="middle" x="87.75" y="-95.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">NVD · CIRCL · Exploit&#45;DB</text>
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>
96
120
  </g>
97
121
  <!-- Intel -->
98
- <g id="node9" class="node">
122
+ <g id="node10" class="node">
99
123
  <title>Intel</title>
100
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M393.25,-124C393.25,-124 303.75,-124 303.75,-124 297.75,-124 291.75,-118 291.75,-112 291.75,-112 291.75,-100 291.75,-100 291.75,-94 297.75,-88 303.75,-88 303.75,-88 393.25,-88 393.25,-88 399.25,-88 405.25,-94 405.25,-100 405.25,-100 405.25,-112 405.25,-112 405.25,-118 399.25,-124 393.25,-124"/>
101
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-109.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_intel</text>
102
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-95.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">CVE / exploit lookup</text>
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>
103
127
  </g>
104
128
  <!-- Feeds&#45;&gt;Intel -->
105
- <g id="edge5" class="edge">
129
+ <g id="edge6" class="edge">
106
130
  <title>Feeds&#45;&gt;Intel</title>
107
- <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M160.14,-106C198.04,-106 244.31,-106 281.38,-106"/>
108
- <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="281.12,-108.8 289.12,-106 281.12,-103.2 281.12,-108.8"/>
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"/>
109
133
  </g>
110
134
  <!-- Store -->
111
- <g id="node11" class="node">
135
+ <g id="node12" class="node">
112
136
  <title>Store</title>
113
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M695.62,-197.69C695.62,-200.1 672.71,-202.06 644.5,-202.06 616.29,-202.06 593.38,-200.1 593.38,-197.69 593.38,-197.69 593.38,-158.31 593.38,-158.31 593.38,-155.9 616.29,-153.94 644.5,-153.94 672.71,-153.94 695.62,-155.9 695.62,-158.31 695.62,-158.31 695.62,-197.69 695.62,-197.69"/>
114
- <path fill="none" stroke="#334155" stroke-width="1.4" d="M695.62,-197.69C695.62,-195.27 672.71,-193.31 644.5,-193.31 616.29,-193.31 593.38,-195.27 593.38,-197.69"/>
115
- <text xml:space="preserve" text-anchor="middle" x="644.5" y="-181.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/</text>
116
- <text xml:space="preserve" text-anchor="middle" x="644.5" y="-167.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
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>
117
141
  </g>
118
142
  <!-- Snap&#45;&gt;Store -->
119
- <g id="edge6" class="edge">
143
+ <g id="edge7" class="edge">
120
144
  <title>Snap&#45;&gt;Store</title>
121
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M393.84,-308.22C411.99,-302.09 433.03,-294.38 451.5,-286 503.15,-262.57 559.38,-230.05 597.56,-206.83"/>
122
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="598.86,-209.32 604.22,-202.75 595.94,-204.54 598.86,-209.32"/>
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"/>
123
147
  </g>
124
148
  <!-- Drift&#45;&gt;Store -->
125
- <g id="edge7" class="edge">
149
+ <g id="edge8" class="edge">
126
150
  <title>Drift&#45;&gt;Store</title>
127
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M396.77,-239.03C434.24,-230.27 487.9,-217.59 534.75,-206 550.5,-202.1 567.5,-197.78 583.28,-193.72"/>
128
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="583.97,-196.43 591.02,-191.72 582.57,-191.01 583.97,-196.43"/>
129
- </g>
130
- <!-- Obs -->
131
- <g id="node8" class="node">
132
- <title>Obs</title>
133
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M385,-196C385,-196 312,-196 312,-196 306,-196 300,-190 300,-184 300,-184 300,-172 300,-172 300,-166 306,-160 312,-160 312,-160 385,-160 385,-160 391,-160 397,-166 397,-172 397,-172 397,-184 397,-184 397,-190 391,-196 385,-196"/>
134
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-181.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_observe</text>
135
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-167.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">record recon fact</text>
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"/>
136
153
  </g>
137
154
  <!-- Obs&#45;&gt;Store -->
138
- <g id="edge8" class="edge">
155
+ <g id="edge9" class="edge">
139
156
  <title>Obs&#45;&gt;Store</title>
140
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M397.39,-178C448.09,-178 528.24,-178 583.21,-178"/>
141
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="583.2,-180.8 591.2,-178 583.2,-175.2 583.2,-180.8"/>
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"/>
142
159
  </g>
143
160
  <!-- Intel&#45;&gt;Store -->
144
- <g id="edge9" class="edge">
161
+ <g id="edge10" class="edge">
145
162
  <title>Intel&#45;&gt;Store</title>
146
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M405.84,-119.8C456.69,-132.25 531.3,-150.52 583.32,-163.26"/>
147
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="582.41,-165.92 590.84,-165.1 583.74,-160.48 582.41,-165.92"/>
148
- <text xml:space="preserve" text-anchor="middle" x="512.62" y="-152.52" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record:true</text>
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>
149
166
  </g>
150
167
  <!-- Corr -->
151
- <g id="node10" class="node">
168
+ <g id="node11" class="node">
152
169
  <title>Corr</title>
153
- <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M386.5,-52C386.5,-52 310.5,-52 310.5,-52 304.5,-52 298.5,-46 298.5,-40 298.5,-40 298.5,-28 298.5,-28 298.5,-22 304.5,-16 310.5,-16 310.5,-16 386.5,-16 386.5,-16 392.5,-16 398.5,-22 398.5,-28 398.5,-28 398.5,-40 398.5,-40 398.5,-46 392.5,-52 386.5,-52"/>
154
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-37.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_correlate</text>
155
- <text xml:space="preserve" text-anchor="middle" x="348.5" y="-23.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">join with Learning</text>
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>
156
174
  </g>
157
175
  <!-- Prompt -->
158
- <g id="node12" class="node">
176
+ <g id="node13" class="node">
159
177
  <title>Prompt</title>
160
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M695.25,-77C695.25,-77 593.75,-77 593.75,-77 587.75,-77 581.75,-71 581.75,-65 581.75,-65 581.75,-53 581.75,-53 581.75,-47 587.75,-41 593.75,-41 593.75,-41 695.25,-41 695.25,-41 701.25,-41 707.25,-47 707.25,-53 707.25,-53 707.25,-65 707.25,-65 707.25,-71 701.25,-77 695.25,-77"/>
161
- <text xml:space="preserve" text-anchor="middle" x="644.5" y="-62.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">EXTROSPECTION</text>
162
- <text xml:space="preserve" text-anchor="middle" x="644.5" y="-48.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">block in system prompt</text>
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>
163
181
  </g>
164
182
  <!-- Corr&#45;&gt;Prompt -->
165
- <g id="edge10" class="edge">
183
+ <g id="edge11" class="edge">
166
184
  <title>Corr&#45;&gt;Prompt</title>
167
- <path fill="none" stroke="#a78bfa" stroke-width="2" d="M399.37,-38.24C446.27,-42.23 517.05,-48.25 570.34,-52.78"/>
168
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="569.86,-55.55 578.07,-53.44 570.34,-49.97 569.86,-55.55"/>
169
- <text xml:space="preserve" text-anchor="middle" x="512.62" y="-51.42" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
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>
170
188
  </g>
171
189
  <!-- Store&#45;&gt;Corr -->
172
- <g id="edge12" class="edge">
190
+ <g id="edge13" class="edge">
173
191
  <title>Store&#45;&gt;Corr</title>
174
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M625.47,-153.5C596.26,-113.98 541.21,-40.24 534.75,-37 496.22,-17.67 447.26,-17.76 409.35,-22.23"/>
175
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="408.99,-19.45 401.42,-23.27 409.71,-25 408.99,-19.45"/>
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"/>
176
194
  </g>
177
195
  <!-- Store&#45;&gt;Prompt -->
178
- <g id="edge11" class="edge">
196
+ <g id="edge12" class="edge">
179
197
  <title>Store&#45;&gt;Prompt</title>
180
- <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M644.5,-153.34C644.5,-134.16 644.5,-107.51 644.5,-87.42"/>
181
- <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="647.3,-87.56 644.5,-79.56 641.7,-87.56 647.3,-87.56"/>
182
- <text xml:space="preserve" text-anchor="middle" x="636.25" y="-112.17" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
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>
183
201
  </g>
184
202
  </g>
185
203
  </svg>