pwn 0.5.628 → 0.5.629

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +29 -21
  3. data/bin/pwn +35 -1
  4. data/bin/pwn_setup +64 -0
  5. data/documentation/AI-Integration.md +48 -9
  6. data/documentation/AWS.md +1 -1
  7. data/documentation/Agent-Tool-Registry.md +24 -0
  8. data/documentation/BurpSuite.md +4 -1
  9. data/documentation/CLI-Drivers.md +27 -10
  10. data/documentation/Configuration.md +37 -10
  11. data/documentation/Contributing.md +13 -3
  12. data/documentation/Extrospection.md +108 -98
  13. data/documentation/FFI.md +14 -2
  14. data/documentation/Fuzzing.md +3 -0
  15. data/documentation/General-PWN-Usage.md +12 -0
  16. data/documentation/Hardware.md +4 -0
  17. data/documentation/Home.md +4 -4
  18. data/documentation/How-PWN-Works.md +2 -1
  19. data/documentation/Installation.md +201 -37
  20. data/documentation/Metasploit.md +4 -1
  21. data/documentation/NmapIt.md +3 -0
  22. data/documentation/Persistence.md +5 -2
  23. data/documentation/Reporting.md +3 -0
  24. data/documentation/SDR.md +4 -0
  25. data/documentation/Skills-Memory-Learning.md +24 -11
  26. data/documentation/Swarm.md +20 -0
  27. data/documentation/Transparent-Browser.md +3 -0
  28. data/documentation/Troubleshooting.md +63 -7
  29. data/documentation/What-is-PWN.md +1 -1
  30. data/documentation/diagrams/agent-tool-registry.svg +120 -109
  31. data/documentation/diagrams/ai-integration-tool-calling.svg +76 -65
  32. data/documentation/diagrams/dot/agent-tool-registry.dot +5 -3
  33. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +3 -2
  34. data/documentation/diagrams/dot/memory-skills-detailed.dot +26 -4
  35. data/documentation/diagrams/dot/overall-pwn-architecture.dot +6 -4
  36. data/documentation/diagrams/dot/persistence-filesystem.dot +4 -2
  37. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +31 -10
  38. data/documentation/diagrams/dot/swarm-multi-agent.dot +7 -1
  39. data/documentation/diagrams/extrospection-world-awareness.svg +129 -129
  40. data/documentation/diagrams/memory-skills-detailed.svg +268 -137
  41. data/documentation/diagrams/overall-pwn-architecture.svg +188 -171
  42. data/documentation/diagrams/persistence-filesystem.svg +115 -85
  43. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +407 -255
  44. data/documentation/diagrams/sdr-radio-flow.svg +51 -51
  45. data/documentation/diagrams/swarm-multi-agent.svg +156 -119
  46. data/documentation/pwn-REPL.md +1 -0
  47. data/documentation/pwn-ai-Agent.md +50 -22
  48. data/lib/pwn/ai/agent/dispatch.rb +1 -1
  49. data/lib/pwn/ai/agent/learning.rb +1 -1
  50. data/lib/pwn/ai/agent/loop.rb +40 -0
  51. data/lib/pwn/ai/agent/metrics.rb +1 -1
  52. data/lib/pwn/config.rb +2 -2
  53. data/lib/pwn/memory_index.rb +1 -1
  54. data/lib/pwn/plugins/repl.rb +26 -2
  55. data/lib/pwn/setup.rb +563 -0
  56. data/lib/pwn/version.rb +1 -1
  57. data/lib/pwn.rb +1 -0
  58. data/spec/lib/pwn/setup_spec.rb +28 -0
  59. data/third_party/pwn_rdoc.jsonl +15 -1
  60. metadata +5 -1
@@ -4,285 +4,296 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Agent_Tool_Registry Pages: 1 -->
7
- <svg width="652pt" height="825pt"
8
- viewBox="0.00 0.00 652.00 825.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 782.2)">
7
+ <svg width="755pt" height="849pt"
8
+ viewBox="0.00 0.00 755.00 849.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 806.2)">
10
10
  <title>PWN_Agent_Tool_Registry</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-782.2 608.45,-782.2 608.45,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="10.38" y="-717" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Registry — Toolsets exposed to the LLM</text>
13
- <text xml:space="preserve" text-anchor="start" x="155.5" y="-705.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">10 toolsets · 61 callable tools · lib/pwn/ai/agent/tools/*</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-806.2 711.95,-806.2 711.95,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="62.12" y="-741" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Registry — Toolsets exposed to the LLM</text>
13
+ <text xml:space="preserve" text-anchor="start" x="207.25" y="-729.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">10 toolsets · 61 callable tools · lib/pwn/ai/agent/tools/*</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_ts</title>
16
- <path fill="#022c22" stroke="#047857" stroke-width="2" d="M201.25,-14C201.25,-14 267.75,-14 267.75,-14 273.75,-14 279.75,-20 279.75,-26 279.75,-26 279.75,-634 279.75,-634 279.75,-640 273.75,-646 267.75,-646 267.75,-646 201.25,-646 201.25,-646 195.25,-646 189.25,-640 189.25,-634 189.25,-634 189.25,-26 189.25,-26 189.25,-20 195.25,-14 201.25,-14"/>
17
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-623" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Toolsets</text>
16
+ <path fill="#022c22" stroke="#047857" stroke-width="2" d="M289,-77C289,-77 355.5,-77 355.5,-77 361.5,-77 367.5,-83 367.5,-89 367.5,-89 367.5,-697 367.5,-697 367.5,-703 361.5,-709 355.5,-709 355.5,-709 289,-709 289,-709 283,-709 277,-703 277,-697 277,-697 277,-89 277,-89 277,-83 283,-77 289,-77"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-686" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Toolsets</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_tools</title>
21
- <path fill="#422006" stroke="#a16207" stroke-width="2" d="M376.75,-8C376.75,-8 553.25,-8 553.25,-8 559.25,-8 565.25,-14 565.25,-20 565.25,-20 565.25,-680 565.25,-680 565.25,-686 559.25,-692 553.25,-692 553.25,-692 376.75,-692 376.75,-692 370.75,-692 364.75,-686 364.75,-680 364.75,-680 364.75,-20 364.75,-20 364.75,-14 370.75,-8 376.75,-8"/>
22
- <text xml:space="preserve" text-anchor="middle" x="465" y="-669" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Tools &#160;(LLM&#45;callable)</text>
21
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M480.25,-8C480.25,-8 656.75,-8 656.75,-8 662.75,-8 668.75,-14 668.75,-20 668.75,-20 668.75,-704 668.75,-704 668.75,-710 662.75,-716 656.75,-716 656.75,-716 480.25,-716 480.25,-716 474.25,-716 468.25,-710 468.25,-704 468.25,-704 468.25,-20 468.25,-20 468.25,-14 474.25,-8 480.25,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="568.5" y="-693" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Tools &#160;(LLM&#45;callable)</text>
23
23
  </g>
24
24
  <!-- Registry -->
25
25
  <g id="node1" class="node">
26
26
  <title>Registry</title>
27
- <path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M84.25,-339.38C84.25,-339.38 12,-339.38 12,-339.38 6,-339.38 0,-333.38 0,-327.38 0,-327.38 0,-300.62 0,-300.62 0,-294.62 6,-288.62 12,-288.62 12,-288.62 84.25,-288.62 84.25,-288.62 90.25,-288.62 96.25,-294.62 96.25,-300.62 96.25,-300.62 96.25,-327.38 96.25,-327.38 96.25,-333.38 90.25,-339.38 84.25,-339.38"/>
28
- <text xml:space="preserve" text-anchor="middle" x="48.12" y="-323.98" font-family="sans-Serif" font-size="12.00" fill="#0f172a">Registry</text>
29
- <text xml:space="preserve" text-anchor="middle" x="48.12" y="-309.73" font-family="sans-Serif" font-size="12.00" fill="#0f172a">JSON&#45;Schema</text>
30
- <text xml:space="preserve" text-anchor="middle" x="48.12" y="-295.48" font-family="sans-Serif" font-size="12.00" fill="#0f172a">function defs</text>
27
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M156.25,-401.5C156.25,-401.5 12,-401.5 12,-401.5 6,-401.5 0,-395.5 0,-389.5 0,-389.5 0,-348.5 0,-348.5 0,-342.5 6,-336.5 12,-336.5 12,-336.5 156.25,-336.5 156.25,-336.5 162.25,-336.5 168.25,-342.5 168.25,-348.5 168.25,-348.5 168.25,-389.5 168.25,-389.5 168.25,-395.5 162.25,-401.5 156.25,-401.5"/>
28
+ <text xml:space="preserve" text-anchor="middle" x="84.12" y="-386.1" font-family="sans-Serif" font-size="12.00" fill="#0f172a">Registry</text>
29
+ <text xml:space="preserve" text-anchor="middle" x="84.12" y="-371.85" font-family="sans-Serif" font-size="12.00" fill="#0f172a">JSON&#45;Schema function defs</text>
30
+ <text xml:space="preserve" text-anchor="middle" x="84.12" y="-357.6" font-family="sans-Serif" font-size="12.00" fill="#0f172a">rank(query) · CORE_TOOLS</text>
31
+ <text xml:space="preserve" text-anchor="middle" x="84.12" y="-343.35" font-family="sans-Serif" font-size="12.00" fill="#0f172a">tool_router → CORE + top&#45;K</text>
31
32
  </g>
32
33
  <!-- terminal -->
33
34
  <g id="node2" class="node">
34
35
  <title>terminal</title>
35
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-58C249.5,-58 219.5,-58 219.5,-58 213.5,-58 207.5,-52 207.5,-46 207.5,-46 207.5,-34 207.5,-34 207.5,-28 213.5,-22 219.5,-22 219.5,-22 249.5,-22 249.5,-22 255.5,-22 261.5,-28 261.5,-34 261.5,-34 261.5,-46 261.5,-46 261.5,-52 255.5,-58 249.5,-58"/>
36
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">terminal</text>
36
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-670C337.25,-670 307.25,-670 307.25,-670 301.25,-670 295.25,-664 295.25,-658 295.25,-658 295.25,-646 295.25,-646 295.25,-640 301.25,-634 307.25,-634 307.25,-634 337.25,-634 337.25,-634 343.25,-634 349.25,-640 349.25,-646 349.25,-646 349.25,-658 349.25,-658 349.25,-664 343.25,-670 337.25,-670"/>
37
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-648.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">terminal</text>
37
38
  </g>
38
39
  <!-- Registry&#45;&gt;terminal -->
39
40
  <g id="edge1" class="edge">
40
41
  <title>Registry&#45;&gt;terminal</title>
41
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M59.65,-287.85C79.6,-240.57 126.6,-139.42 189.25,-71 192.58,-67.37 196.4,-63.92 200.38,-60.73"/>
42
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="201.71,-62.8 205.83,-56.63 198.76,-58.88 201.71,-62.8"/>
42
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M103.65,-402.17C133.71,-453.86 197.26,-554.64 271.25,-622 276.15,-626.46 281.8,-630.59 287.51,-634.28"/>
43
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="286.05,-636.26 293.3,-637.84 288.62,-632.09 286.05,-636.26"/>
43
44
  </g>
44
45
  <!-- pwn -->
45
46
  <g id="node3" class="node">
46
47
  <title>pwn</title>
47
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-119C249.5,-119 219.5,-119 219.5,-119 213.5,-119 207.5,-113 207.5,-107 207.5,-107 207.5,-95 207.5,-95 207.5,-89 213.5,-83 219.5,-83 219.5,-83 249.5,-83 249.5,-83 255.5,-83 261.5,-89 261.5,-95 261.5,-95 261.5,-107 261.5,-107 261.5,-113 255.5,-119 249.5,-119"/>
48
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-97.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn</text>
48
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-609C337.25,-609 307.25,-609 307.25,-609 301.25,-609 295.25,-603 295.25,-597 295.25,-597 295.25,-585 295.25,-585 295.25,-579 301.25,-573 307.25,-573 307.25,-573 337.25,-573 337.25,-573 343.25,-573 349.25,-579 349.25,-585 349.25,-585 349.25,-597 349.25,-597 349.25,-603 343.25,-609 337.25,-609"/>
49
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-587.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn</text>
49
50
  </g>
50
51
  <!-- Registry&#45;&gt;pwn -->
51
52
  <g id="edge2" class="edge">
52
53
  <title>Registry&#45;&gt;pwn</title>
53
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M65.53,-287.9C89.7,-250.65 137.65,-181.32 189.25,-132 192.72,-128.68 196.58,-125.44 200.53,-122.4"/>
54
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="201.7,-124.58 205.87,-118.45 198.78,-120.64 201.7,-124.58"/>
54
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M112.79,-402.48C147.27,-442.97 209.24,-511.8 271.25,-561 276.32,-565.03 281.99,-568.91 287.62,-572.48"/>
55
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="286.04,-574.38 293.29,-575.94 288.59,-570.2 286.04,-574.38"/>
55
56
  </g>
56
57
  <!-- memory -->
57
58
  <g id="node4" class="node">
58
59
  <title>memory</title>
59
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-180C249.5,-180 219.5,-180 219.5,-180 213.5,-180 207.5,-174 207.5,-168 207.5,-168 207.5,-156 207.5,-156 207.5,-150 213.5,-144 219.5,-144 219.5,-144 249.5,-144 249.5,-144 255.5,-144 261.5,-150 261.5,-156 261.5,-156 261.5,-168 261.5,-168 261.5,-174 255.5,-180 249.5,-180"/>
60
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-158.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory</text>
60
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-548C337.25,-548 307.25,-548 307.25,-548 301.25,-548 295.25,-542 295.25,-536 295.25,-536 295.25,-524 295.25,-524 295.25,-518 301.25,-512 307.25,-512 307.25,-512 337.25,-512 337.25,-512 343.25,-512 349.25,-518 349.25,-524 349.25,-524 349.25,-536 349.25,-536 349.25,-542 343.25,-548 337.25,-548"/>
61
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-526.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory</text>
61
62
  </g>
62
63
  <!-- Registry&#45;&gt;memory -->
63
64
  <g id="edge3" class="edge">
64
65
  <title>Registry&#45;&gt;memory</title>
65
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M77.66,-287.86C105.48,-262.74 149.31,-224.11 189.25,-193 192.68,-190.33 196.31,-187.61 199.97,-184.95"/>
66
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="201.36,-186.97 205.62,-180.9 198.51,-182.99 201.36,-186.97"/>
66
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M130.38,-402.24C167.68,-429.3 222.23,-468.1 271.25,-500 276.44,-503.38 282.01,-506.86 287.47,-510.19"/>
67
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="286.14,-512.25 293.39,-513.77 288.67,-508.05 286.14,-512.25"/>
67
68
  </g>
68
69
  <!-- skills -->
69
70
  <g id="node5" class="node">
70
71
  <title>skills</title>
71
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-241C249.5,-241 219.5,-241 219.5,-241 213.5,-241 207.5,-235 207.5,-229 207.5,-229 207.5,-217 207.5,-217 207.5,-211 213.5,-205 219.5,-205 219.5,-205 249.5,-205 249.5,-205 255.5,-205 261.5,-211 261.5,-217 261.5,-217 261.5,-229 261.5,-229 261.5,-235 255.5,-241 249.5,-241"/>
72
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-219.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills</text>
72
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-487C337.25,-487 307.25,-487 307.25,-487 301.25,-487 295.25,-481 295.25,-475 295.25,-475 295.25,-463 295.25,-463 295.25,-457 301.25,-451 307.25,-451 307.25,-451 337.25,-451 337.25,-451 343.25,-451 349.25,-457 349.25,-463 349.25,-463 349.25,-475 349.25,-475 349.25,-481 343.25,-487 337.25,-487"/>
73
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-465.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills</text>
73
74
  </g>
74
75
  <!-- Registry&#45;&gt;skills -->
75
76
  <g id="edge4" class="edge">
76
77
  <title>Registry&#45;&gt;skills</title>
77
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M97.09,-290.33C129.08,-274.54 170.38,-254.16 199.11,-239.97"/>
78
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="200.18,-242.18 205.38,-236.88 198.01,-237.78 200.18,-242.18"/>
78
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M164.08,-402.44C205.85,-420.13 254.99,-440.94 287.06,-454.52"/>
79
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="285.9,-456.69 293.3,-457.16 287.81,-452.18 285.9,-456.69"/>
79
80
  </g>
80
81
  <!-- sessions -->
81
82
  <g id="node6" class="node">
82
83
  <title>sessions</title>
83
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M250,-302C250,-302 219,-302 219,-302 213,-302 207,-296 207,-290 207,-290 207,-278 207,-278 207,-272 213,-266 219,-266 219,-266 250,-266 250,-266 256,-266 262,-272 262,-278 262,-278 262,-290 262,-290 262,-296 256,-302 250,-302"/>
84
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-280.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions</text>
84
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.75,-426C337.75,-426 306.75,-426 306.75,-426 300.75,-426 294.75,-420 294.75,-414 294.75,-414 294.75,-402 294.75,-402 294.75,-396 300.75,-390 306.75,-390 306.75,-390 337.75,-390 337.75,-390 343.75,-390 349.75,-396 349.75,-402 349.75,-402 349.75,-414 349.75,-414 349.75,-420 343.75,-426 337.75,-426"/>
85
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-404.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions</text>
85
86
  </g>
86
87
  <!-- Registry&#45;&gt;sessions -->
87
88
  <g id="edge5" class="edge">
88
89
  <title>Registry&#45;&gt;sessions</title>
89
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M97.09,-306.2C128.71,-301.05 169.42,-294.43 198.11,-289.76"/>
90
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="198.45,-292.19 204.96,-288.64 197.66,-287.35 198.45,-292.19"/>
90
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M169.04,-382.86C209.27,-389.5 255.28,-397.1 286.09,-402.19"/>
91
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="285.41,-404.56 292.71,-403.29 286.21,-399.73 285.41,-404.56"/>
91
92
  </g>
92
93
  <!-- learning -->
93
94
  <g id="node7" class="node">
94
95
  <title>learning</title>
95
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-363C249.5,-363 219.5,-363 219.5,-363 213.5,-363 207.5,-357 207.5,-351 207.5,-351 207.5,-339 207.5,-339 207.5,-333 213.5,-327 219.5,-327 219.5,-327 249.5,-327 249.5,-327 255.5,-327 261.5,-333 261.5,-339 261.5,-339 261.5,-351 261.5,-351 261.5,-357 255.5,-363 249.5,-363"/>
96
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-341.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning</text>
96
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-365C337.25,-365 307.25,-365 307.25,-365 301.25,-365 295.25,-359 295.25,-353 295.25,-353 295.25,-341 295.25,-341 295.25,-335 301.25,-329 307.25,-329 307.25,-329 337.25,-329 337.25,-329 343.25,-329 349.25,-335 349.25,-341 349.25,-341 349.25,-353 349.25,-353 349.25,-359 343.25,-365 337.25,-365"/>
97
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-343.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning</text>
97
98
  </g>
98
99
  <!-- Registry&#45;&gt;learning -->
99
100
  <g id="edge6" class="edge">
100
101
  <title>Registry&#45;&gt;learning</title>
101
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M97.09,-322.06C128.8,-327.4 169.67,-334.27 198.37,-339.09"/>
102
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="197.92,-341.5 205.23,-340.25 198.73,-336.67 197.92,-341.5"/>
102
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M169.04,-361.18C209.39,-357.42 255.56,-353.12 286.37,-350.25"/>
103
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="286.23,-352.72 292.97,-349.63 285.78,-347.84 286.23,-352.72"/>
103
104
  </g>
104
105
  <!-- metrics -->
105
106
  <g id="node8" class="node">
106
107
  <title>metrics</title>
107
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-424C249.5,-424 219.5,-424 219.5,-424 213.5,-424 207.5,-418 207.5,-412 207.5,-412 207.5,-400 207.5,-400 207.5,-394 213.5,-388 219.5,-388 219.5,-388 249.5,-388 249.5,-388 255.5,-388 261.5,-394 261.5,-400 261.5,-400 261.5,-412 261.5,-412 261.5,-418 255.5,-424 249.5,-424"/>
108
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-402.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">metrics</text>
108
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-304C337.25,-304 307.25,-304 307.25,-304 301.25,-304 295.25,-298 295.25,-292 295.25,-292 295.25,-280 295.25,-280 295.25,-274 301.25,-268 307.25,-268 307.25,-268 337.25,-268 337.25,-268 343.25,-268 349.25,-274 349.25,-280 349.25,-280 349.25,-292 349.25,-292 349.25,-298 343.25,-304 337.25,-304"/>
109
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-282.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">metrics</text>
109
110
  </g>
110
111
  <!-- Registry&#45;&gt;metrics -->
111
112
  <g id="edge7" class="edge">
112
113
  <title>Registry&#45;&gt;metrics</title>
113
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M97.09,-337.93C129.21,-353.96 170.73,-374.68 199.48,-389.03"/>
114
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="198.02,-391.03 205.38,-391.97 200.21,-386.65 198.02,-391.03"/>
114
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M169.04,-339.5C209.56,-325.26 255.95,-308.95 286.76,-298.12"/>
115
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="287.27,-300.54 293.06,-295.91 285.64,-295.92 287.27,-300.54"/>
115
116
  </g>
116
117
  <!-- extro -->
117
118
  <g id="node9" class="node">
118
119
  <title>extro</title>
119
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M259.75,-485C259.75,-485 209.25,-485 209.25,-485 203.25,-485 197.25,-479 197.25,-473 197.25,-473 197.25,-461 197.25,-461 197.25,-455 203.25,-449 209.25,-449 209.25,-449 259.75,-449 259.75,-449 265.75,-449 271.75,-455 271.75,-461 271.75,-461 271.75,-473 271.75,-473 271.75,-479 265.75,-485 259.75,-485"/>
120
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-463.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extrospection</text>
120
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M347.5,-243C347.5,-243 297,-243 297,-243 291,-243 285,-237 285,-231 285,-231 285,-219 285,-219 285,-213 291,-207 297,-207 297,-207 347.5,-207 347.5,-207 353.5,-207 359.5,-213 359.5,-219 359.5,-219 359.5,-231 359.5,-231 359.5,-237 353.5,-243 347.5,-243"/>
121
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-221.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extrospection</text>
121
122
  </g>
122
123
  <!-- Registry&#45;&gt;extro -->
123
124
  <g id="edge8" class="edge">
124
125
  <title>Registry&#45;&gt;extro</title>
125
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M76.96,-340.28C104.62,-365.95 148.66,-405.62 189.25,-437 192.06,-439.17 195.02,-441.36 198.01,-443.52"/>
126
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="196.54,-445.48 203.68,-447.51 199.37,-441.48 196.54,-445.48"/>
126
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M139.89,-335.6C184.14,-308.62 245.23,-271.36 283.99,-247.73"/>
127
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="284.83,-250.08 289.53,-244.34 282.28,-245.9 284.83,-250.08"/>
127
128
  </g>
128
129
  <!-- cron -->
129
130
  <g id="node10" class="node">
130
131
  <title>cron</title>
131
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-546C249.5,-546 219.5,-546 219.5,-546 213.5,-546 207.5,-540 207.5,-534 207.5,-534 207.5,-522 207.5,-522 207.5,-516 213.5,-510 219.5,-510 219.5,-510 249.5,-510 249.5,-510 255.5,-510 261.5,-516 261.5,-522 261.5,-522 261.5,-534 261.5,-534 261.5,-540 255.5,-546 249.5,-546"/>
132
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-524.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron</text>
132
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-182C337.25,-182 307.25,-182 307.25,-182 301.25,-182 295.25,-176 295.25,-170 295.25,-170 295.25,-158 295.25,-158 295.25,-152 301.25,-146 307.25,-146 307.25,-146 337.25,-146 337.25,-146 343.25,-146 349.25,-152 349.25,-158 349.25,-158 349.25,-170 349.25,-170 349.25,-176 343.25,-182 337.25,-182"/>
133
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron</text>
133
134
  </g>
134
135
  <!-- Registry&#45;&gt;cron -->
135
136
  <g id="edge9" class="edge">
136
137
  <title>Registry&#45;&gt;cron</title>
137
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M65.16,-340.2C89.07,-377.93 136.9,-448.46 189.25,-498 192.62,-501.19 196.36,-504.28 200.2,-507.18"/>
138
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="198.7,-509.12 205.81,-511.22 201.56,-505.14 198.7,-509.12"/>
138
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M116.67,-335.82C152.36,-299.19 213.12,-239.5 271.25,-195 276.38,-191.07 282.03,-187.19 287.63,-183.57"/>
139
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="288.63,-185.84 293.24,-180.04 286.01,-181.7 288.63,-185.84"/>
139
140
  </g>
140
141
  <!-- swarm -->
141
142
  <g id="node11" class="node">
142
143
  <title>swarm</title>
143
- <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M249.5,-607C249.5,-607 219.5,-607 219.5,-607 213.5,-607 207.5,-601 207.5,-595 207.5,-595 207.5,-583 207.5,-583 207.5,-577 213.5,-571 219.5,-571 219.5,-571 249.5,-571 249.5,-571 255.5,-571 261.5,-577 261.5,-583 261.5,-583 261.5,-595 261.5,-595 261.5,-601 255.5,-607 249.5,-607"/>
144
- <text xml:space="preserve" text-anchor="middle" x="234.5" y="-585.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">swarm</text>
144
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M337.25,-121C337.25,-121 307.25,-121 307.25,-121 301.25,-121 295.25,-115 295.25,-109 295.25,-109 295.25,-97 295.25,-97 295.25,-91 301.25,-85 307.25,-85 307.25,-85 337.25,-85 337.25,-85 343.25,-85 349.25,-91 349.25,-97 349.25,-97 349.25,-109 349.25,-109 349.25,-115 343.25,-121 337.25,-121"/>
145
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-99.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">swarm</text>
145
146
  </g>
146
147
  <!-- Registry&#45;&gt;swarm -->
147
148
  <g id="edge10" class="edge">
148
149
  <title>Registry&#45;&gt;swarm</title>
149
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M59.34,-340.09C78.95,-387.76 125.64,-490.35 189.25,-559 192.56,-562.58 196.38,-565.95 200.35,-569.05"/>
150
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="198.69,-570.87 205.79,-573.02 201.58,-566.91 198.69,-570.87"/>
150
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M106.11,-335.64C137.71,-287.19 201.31,-196.33 271.25,-134 276.18,-129.6 281.81,-125.45 287.48,-121.7"/>
151
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="288.61,-123.88 293.21,-118.06 285.99,-119.74 288.61,-123.88"/>
151
152
  </g>
152
153
  <!-- t_shell -->
153
154
  <g id="node12" class="node">
154
155
  <title>t_shell</title>
155
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M479.5,-52C479.5,-52 449.5,-52 449.5,-52 443.5,-52 437.5,-46 437.5,-40 437.5,-40 437.5,-28 437.5,-28 437.5,-22 443.5,-16 449.5,-16 449.5,-16 479.5,-16 479.5,-16 485.5,-16 491.5,-22 491.5,-28 491.5,-28 491.5,-40 491.5,-40 491.5,-46 485.5,-52 479.5,-52"/>
156
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-30.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">shell</text>
156
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M583,-677C583,-677 553,-677 553,-677 547,-677 541,-671 541,-665 541,-665 541,-653 541,-653 541,-647 547,-641 553,-641 553,-641 583,-641 583,-641 589,-641 595,-647 595,-653 595,-653 595,-665 595,-665 595,-671 589,-677 583,-677"/>
157
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-655.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">shell</text>
157
158
  </g>
158
159
  <!-- terminal&#45;&gt;t_shell -->
159
160
  <g id="edge11" class="edge">
160
161
  <title>terminal&#45;&gt;t_shell</title>
161
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-39.3C303.37,-38.21 382.84,-36.12 428.65,-34.92"/>
162
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="428.47,-37.37 435.4,-34.74 428.34,-32.47 428.47,-37.37"/>
162
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-652.76C394.03,-654.03 482.8,-656.58 532.06,-658"/>
163
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="531.75,-660.44 538.82,-658.19 531.89,-655.54 531.75,-660.44"/>
163
164
  </g>
164
165
  <!-- t_eval -->
165
166
  <g id="node13" class="node">
166
167
  <title>t_eval</title>
167
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M480.38,-113C480.38,-113 448.62,-113 448.62,-113 442.62,-113 436.62,-107 436.62,-101 436.62,-101 436.62,-89 436.62,-89 436.62,-83 442.62,-77 448.62,-77 448.62,-77 480.38,-77 480.38,-77 486.38,-77 492.38,-83 492.38,-89 492.38,-89 492.38,-101 492.38,-101 492.38,-107 486.38,-113 480.38,-113"/>
168
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-91.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">pwn_eval</text>
168
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M583.88,-616C583.88,-616 552.12,-616 552.12,-616 546.12,-616 540.12,-610 540.12,-604 540.12,-604 540.12,-592 540.12,-592 540.12,-586 546.12,-580 552.12,-580 552.12,-580 583.88,-580 583.88,-580 589.88,-580 595.88,-586 595.88,-592 595.88,-592 595.88,-604 595.88,-604 595.88,-610 589.88,-616 583.88,-616"/>
169
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-594.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">pwn_eval</text>
169
170
  </g>
170
171
  <!-- pwn&#45;&gt;t_eval -->
171
172
  <g id="edge12" class="edge">
172
173
  <title>pwn&#45;&gt;t_eval</title>
173
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-100.3C303.04,-99.22 381.57,-97.16 427.54,-95.95"/>
174
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="427.41,-98.4 434.34,-95.77 427.28,-93.5 427.41,-98.4"/>
174
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-591.76C393.8,-593.03 481.87,-595.56 531.28,-596.97"/>
175
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="531.01,-599.42 538.07,-597.17 531.15,-594.52 531.01,-599.42"/>
175
176
  </g>
176
177
  <!-- t_mem -->
177
178
  <g id="node14" class="node">
178
179
  <title>t_mem</title>
179
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M500.62,-174C500.62,-174 428.38,-174 428.38,-174 422.38,-174 416.38,-168 416.38,-162 416.38,-162 416.38,-150 416.38,-150 416.38,-144 422.38,-138 428.38,-138 428.38,-138 500.62,-138 500.62,-138 506.62,-138 512.62,-144 512.62,-150 512.62,-150 512.62,-162 512.62,-162 512.62,-168 506.62,-174 500.62,-174"/>
180
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-157.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">memory_remember</text>
181
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-147.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">recall · forget · clear</text>
180
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M604.12,-555C604.12,-555 531.88,-555 531.88,-555 525.88,-555 519.88,-549 519.88,-543 519.88,-543 519.88,-531 519.88,-531 519.88,-525 525.88,-519 531.88,-519 531.88,-519 604.12,-519 604.12,-519 610.12,-519 616.12,-525 616.12,-531 616.12,-531 616.12,-543 616.12,-543 616.12,-549 610.12,-555 604.12,-555"/>
181
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-538.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">memory_remember</text>
182
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-528.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">recall · forget · clear</text>
182
183
  </g>
183
184
  <!-- memory&#45;&gt;t_mem -->
184
185
  <g id="edge13" class="edge">
185
186
  <title>memory&#45;&gt;t_mem</title>
186
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-161.3C297.6,-160.37 361.35,-158.69 407.64,-157.47"/>
187
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="407.47,-159.93 414.41,-157.29 407.34,-155.03 407.47,-159.93"/>
187
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-530.76C388.29,-531.87 460.51,-533.94 511.07,-535.39"/>
188
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="510.88,-537.84 517.95,-535.59 511.02,-532.94 510.88,-537.84"/>
188
189
  </g>
189
190
  <!-- t_skill -->
190
191
  <g id="node15" class="node">
191
192
  <title>t_skill</title>
192
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M522.75,-235C522.75,-235 406.25,-235 406.25,-235 400.25,-235 394.25,-229 394.25,-223 394.25,-223 394.25,-211 394.25,-211 394.25,-205 400.25,-199 406.25,-199 406.25,-199 522.75,-199 522.75,-199 528.75,-199 534.75,-205 534.75,-211 534.75,-211 534.75,-223 534.75,-223 534.75,-229 528.75,-235 522.75,-235"/>
193
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-218.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">skill_list · view</text>
194
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-208.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">create · add_reference · delete</text>
193
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M626.25,-494C626.25,-494 509.75,-494 509.75,-494 503.75,-494 497.75,-488 497.75,-482 497.75,-482 497.75,-470 497.75,-470 497.75,-464 503.75,-458 509.75,-458 509.75,-458 626.25,-458 626.25,-458 632.25,-458 638.25,-464 638.25,-470 638.25,-470 638.25,-482 638.25,-482 638.25,-488 632.25,-494 626.25,-494"/>
194
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-477.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">skill_list · view</text>
195
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-467.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">create · add_reference · delete</text>
195
196
  </g>
196
197
  <!-- skills&#45;&gt;t_skill -->
197
198
  <g id="edge14" class="edge">
198
199
  <title>skills&#45;&gt;t_skill</title>
199
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-222.3C292.17,-221.51 342.5,-220.18 385.32,-219.06"/>
200
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="385.18,-221.51 392.12,-218.88 385.05,-216.61 385.18,-221.51"/>
200
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-469.76C382.92,-470.71 440.99,-472.38 488.77,-473.75"/>
201
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="488.52,-476.2 495.59,-473.95 488.66,-471.3 488.52,-476.2"/>
201
202
  </g>
202
203
  <!-- t_sess -->
203
204
  <g id="node16" class="node">
204
205
  <title>t_sess</title>
205
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M503.62,-296C503.62,-296 425.38,-296 425.38,-296 419.38,-296 413.38,-290 413.38,-284 413.38,-284 413.38,-272 413.38,-272 413.38,-266 419.38,-260 425.38,-260 425.38,-260 503.62,-260 503.62,-260 509.62,-260 515.62,-266 515.62,-272 515.62,-272 515.62,-284 515.62,-284 515.62,-290 509.62,-296 503.62,-296"/>
206
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-279.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">sessions_list · view</text>
207
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-269.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">current · delete · stats</text>
206
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M607.12,-433C607.12,-433 528.88,-433 528.88,-433 522.88,-433 516.88,-427 516.88,-421 516.88,-421 516.88,-409 516.88,-409 516.88,-403 522.88,-397 528.88,-397 528.88,-397 607.12,-397 607.12,-397 613.12,-397 619.12,-403 619.12,-409 619.12,-409 619.12,-421 619.12,-421 619.12,-427 613.12,-433 607.12,-433"/>
207
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-416.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">sessions_list · view</text>
208
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-406.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">current · delete · stats</text>
208
209
  </g>
209
210
  <!-- sessions&#45;&gt;t_sess -->
210
211
  <g id="edge15" class="edge">
211
212
  <title>sessions&#45;&gt;t_sess</title>
212
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.55,-283.29C297.24,-282.38 358.36,-280.77 404.12,-279.56"/>
213
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="404.16,-282.01 411.1,-279.38 404.03,-277.11 404.16,-282.01"/>
213
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M350.27,-408.78C388.11,-409.86 457.9,-411.87 508.07,-413.31"/>
214
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="507.84,-415.75 514.91,-413.5 507.98,-410.85 507.84,-415.75"/>
214
215
  </g>
215
216
  <!-- t_learn -->
216
217
  <g id="node17" class="node">
217
218
  <title>t_learn</title>
218
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M520.88,-381.25C520.88,-381.25 408.12,-381.25 408.12,-381.25 402.12,-381.25 396.12,-375.25 396.12,-369.25 396.12,-369.25 396.12,-332.75 396.12,-332.75 396.12,-326.75 402.12,-320.75 408.12,-320.75 408.12,-320.75 520.88,-320.75 520.88,-320.75 526.88,-320.75 532.88,-326.75 532.88,-332.75 532.88,-332.75 532.88,-369.25 532.88,-369.25 532.88,-375.25 526.88,-381.25 520.88,-381.25"/>
219
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-368.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">learning_note_outcome</text>
220
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-358.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">reflect · distill_skill</text>
221
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-347.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">consolidate · outcomes · reset</text>
222
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-337.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">mistakes_list · record</text>
223
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-326.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">mistakes_resolve · reset</text>
219
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M628.5,-371.5C628.5,-371.5 507.5,-371.5 507.5,-371.5 501.5,-371.5 495.5,-365.5 495.5,-359.5 495.5,-359.5 495.5,-312.5 495.5,-312.5 495.5,-306.5 501.5,-300.5 507.5,-300.5 507.5,-300.5 628.5,-300.5 628.5,-300.5 634.5,-300.5 640.5,-306.5 640.5,-312.5 640.5,-312.5 640.5,-359.5 640.5,-359.5 640.5,-365.5 634.5,-371.5 628.5,-371.5"/>
220
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-358.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">learning_note_outcome</text>
221
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-348.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">reflect · distill_skill</text>
222
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-337.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">exemplars_for · export_finetune</text>
223
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-327.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">consolidate · outcomes · reset</text>
224
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-316.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">mistakes_list · record</text>
225
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-306.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">mistakes_resolve · reset</text>
224
226
  </g>
225
227
  <!-- learning&#45;&gt;t_learn -->
226
228
  <g id="edge16" class="edge">
227
229
  <title>learning&#45;&gt;t_learn</title>
228
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-345.7C292.61,-346.5 343.98,-347.85 387.2,-348.99"/>
229
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="387,-351.44 394.06,-349.17 387.13,-346.54 387,-351.44"/>
230
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-345.8C382.39,-344.33 439.16,-341.77 486.49,-339.63"/>
231
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="486.36,-342.09 493.24,-339.33 486.14,-337.2 486.36,-342.09"/>
230
232
  </g>
231
233
  <!-- t_metric -->
232
234
  <g id="node18" class="node">
233
235
  <title>t_metric</title>
234
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M496.5,-442C496.5,-442 432.5,-442 432.5,-442 426.5,-442 420.5,-436 420.5,-430 420.5,-430 420.5,-418 420.5,-418 420.5,-412 426.5,-406 432.5,-406 432.5,-406 496.5,-406 496.5,-406 502.5,-406 508.5,-412 508.5,-418 508.5,-418 508.5,-430 508.5,-430 508.5,-436 502.5,-442 496.5,-442"/>
235
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-425.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">metrics_summary</text>
236
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-415.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">metrics_reset</text>
236
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M600,-275C600,-275 536,-275 536,-275 530,-275 524,-269 524,-263 524,-263 524,-251 524,-251 524,-245 530,-239 536,-239 536,-239 600,-239 600,-239 606,-239 612,-245 612,-251 612,-251 612,-263 612,-263 612,-269 606,-275 600,-275"/>
237
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-258.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">metrics_summary</text>
238
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-248.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">metrics_reset</text>
237
239
  </g>
238
240
  <!-- metrics&#45;&gt;t_metric -->
239
241
  <g id="edge17" class="edge">
240
242
  <title>metrics&#45;&gt;t_metric</title>
241
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-408.1C298.59,-410.98 364.95,-416.22 411.49,-419.89"/>
242
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="411.11,-422.32 418.28,-420.43 411.5,-417.44 411.11,-422.32"/>
243
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-282.84C389.34,-278.14 464.47,-269.2 515.15,-263.17"/>
244
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="515.38,-265.61 522.04,-262.35 514.8,-260.74 515.38,-265.61"/>
243
245
  </g>
244
246
  <!-- t_extro -->
245
247
  <g id="node19" class="node">
246
248
  <title>t_extro</title>
247
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M513,-527.25C513,-527.25 416,-527.25 416,-527.25 410,-527.25 404,-521.25 404,-515.25 404,-515.25 404,-478.75 404,-478.75 404,-472.75 410,-466.75 416,-466.75 416,-466.75 513,-466.75 513,-466.75 519,-466.75 525,-472.75 525,-478.75 525,-478.75 525,-515.25 525,-515.25 525,-521.25 519,-527.25 513,-527.25"/>
248
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-514.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">extro_snapshot · drift</text>
249
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-504.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">observe · intel · correlate</text>
250
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-493.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">watch · verify · rf_tune</text>
251
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-483.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">observations · stats · reset</text>
252
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-472.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">auto_toggle</text>
249
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M621,-213.5C621,-213.5 515,-213.5 515,-213.5 509,-213.5 503,-207.5 503,-201.5 503,-201.5 503,-154.5 503,-154.5 503,-148.5 509,-142.5 515,-142.5 515,-142.5 621,-142.5 621,-142.5 627,-142.5 633,-148.5 633,-154.5 633,-154.5 633,-201.5 633,-201.5 633,-207.5 627,-213.5 621,-213.5"/>
250
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-200.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">extro_snapshot · drift</text>
251
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-190.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">observe · intel · correlate</text>
252
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-179.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">watch · verify · rf_tune · osint</text>
253
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-169.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">serial · telecomm · packet</text>
254
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-158.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">vision · voice · observations</text>
255
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-148.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">stats · reset · auto_toggle</text>
253
256
  </g>
254
257
  <!-- extro&#45;&gt;t_extro -->
255
258
  <g id="edge18" class="edge">
256
259
  <title>extro&#45;&gt;t_extro</title>
257
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M272.39,-471.85C305.45,-476.2 354.8,-482.7 395.08,-488"/>
258
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="394.61,-490.41 401.87,-488.89 395.25,-485.55 394.61,-490.41"/>
260
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M360.01,-217.91C395.36,-211.09 449.82,-200.6 494,-192.08"/>
261
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="494.36,-194.5 500.77,-190.77 493.43,-189.69 494.36,-194.5"/>
259
262
  </g>
260
263
  <!-- t_cron -->
261
264
  <g id="node20" class="node">
262
265
  <title>t_cron</title>
263
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M511.88,-588C511.88,-588 417.12,-588 417.12,-588 411.12,-588 405.12,-582 405.12,-576 405.12,-576 405.12,-564 405.12,-564 405.12,-558 411.12,-552 417.12,-552 417.12,-552 511.88,-552 511.88,-552 517.88,-552 523.88,-558 523.88,-564 523.88,-564 523.88,-576 523.88,-576 523.88,-582 517.88,-588 511.88,-588"/>
264
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-571.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">cron_list · create · run</text>
265
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-561.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">enable · disable · remove</text>
266
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M615.38,-117C615.38,-117 520.62,-117 520.62,-117 514.62,-117 508.62,-111 508.62,-105 508.62,-105 508.62,-93 508.62,-93 508.62,-87 514.62,-81 520.62,-81 520.62,-81 615.38,-81 615.38,-81 621.38,-81 627.38,-87 627.38,-93 627.38,-93 627.38,-105 627.38,-105 627.38,-111 621.38,-117 615.38,-117"/>
267
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-100.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">cron_list · create · run</text>
268
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-90.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">enable · disable · remove</text>
266
269
  </g>
267
270
  <!-- cron&#45;&gt;t_cron -->
268
271
  <g id="edge19" class="edge">
269
272
  <title>cron&#45;&gt;t_cron</title>
270
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-532.9C294.83,-538.93 351.59,-549.39 396.53,-557.66"/>
271
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="395.81,-560.02 403.14,-558.88 396.7,-555.2 395.81,-560.02"/>
273
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-156.92C385.57,-147.38 450.45,-130.08 500.02,-116.86"/>
274
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="500.41,-119.29 506.54,-115.12 499.14,-114.56 500.41,-119.29"/>
272
275
  </g>
273
276
  <!-- t_swarm -->
274
277
  <g id="node21" class="node">
275
278
  <title>t_swarm</title>
276
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M509.25,-652.75C509.25,-652.75 419.75,-652.75 419.75,-652.75 413.75,-652.75 407.75,-646.75 407.75,-640.75 407.75,-640.75 407.75,-625.25 407.75,-625.25 407.75,-619.25 413.75,-613.25 419.75,-613.25 419.75,-613.25 509.25,-613.25 509.25,-613.25 515.25,-613.25 521.25,-619.25 521.25,-625.25 521.25,-625.25 521.25,-640.75 521.25,-640.75 521.25,-646.75 515.25,-652.75 509.25,-652.75"/>
277
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-640.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">agent_list · spawn · ask</text>
278
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-629.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">debate · broadcast</text>
279
- <text xml:space="preserve" text-anchor="middle" x="464.5" y="-619.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">swarm_bus · swarm_list</text>
279
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M612.75,-55.75C612.75,-55.75 523.25,-55.75 523.25,-55.75 517.25,-55.75 511.25,-49.75 511.25,-43.75 511.25,-43.75 511.25,-28.25 511.25,-28.25 511.25,-22.25 517.25,-16.25 523.25,-16.25 523.25,-16.25 612.75,-16.25 612.75,-16.25 618.75,-16.25 624.75,-22.25 624.75,-28.25 624.75,-28.25 624.75,-43.75 624.75,-43.75 624.75,-49.75 618.75,-55.75 612.75,-55.75"/>
280
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-43.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">agent_list · spawn · ask</text>
281
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-32.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">debate · broadcast</text>
282
+ <text xml:space="preserve" text-anchor="middle" x="568" y="-22.2" font-family="sans-Serif" font-size="9.00" fill="#0f172a">swarm_bus · swarm_list</text>
280
283
  </g>
281
284
  <!-- swarm&#45;&gt;t_swarm -->
282
285
  <g id="edge20" class="edge">
283
286
  <title>swarm&#45;&gt;t_swarm</title>
284
- <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M262.1,-594.13C295.5,-600.58 353.9,-611.85 399.25,-620.6"/>
285
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="398.58,-622.97 405.92,-621.89 399.51,-618.16 398.58,-622.97"/>
287
+ <path fill="none" stroke="#f59e0b" stroke-width="1.1" d="M349.8,-95.7C386.15,-85.71 452.58,-67.45 502.44,-53.75"/>
288
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.1" points="502.9,-56.16 509,-51.94 501.6,-51.44 502.9,-56.16"/>
289
+ </g>
290
+ <!-- t_metric&#45;&gt;Registry -->
291
+ <g id="edge21" class="edge">
292
+ <title>t_metric&#45;&gt;Registry</title>
293
+ <path fill="none" stroke="#fbbf24" stroke-width="1.1" stroke-dasharray="5,2" d="M523.48,-251.08C504.79,-246.72 483.73,-239.14 468.25,-226 396.86,-165.44 452.99,-87.05 373.25,-38 334.64,-14.25 310.38,-15.11 271.25,-38 162.89,-101.38 112.76,-253.6 94.18,-327.43"/>
294
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.1" points="91.86,-326.61 92.57,-333.99 96.62,-327.78 91.86,-326.61"/>
295
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-57.7" font-family="serif" font-size="14.00">success_rate</text>
296
+ <text xml:space="preserve" text-anchor="middle" x="322.25" y="-41.2" font-family="serif" font-size="14.00">→ router tie&#45;break</text>
286
297
  </g>
287
298
  </g>
288
299
  </svg>