agent99 0.0.4 → 0.0.5

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/A2A_SPEC-dev.md +1829 -0
  3. data/CHANGELOG.md +31 -0
  4. data/COMMITS.md +196 -0
  5. data/DOCS.md +96 -0
  6. data/README.md +200 -78
  7. data/Rakefile +62 -0
  8. data/docs/AI/htm.md +215 -0
  9. data/docs/AI/htm.rb +141 -0
  10. data/docs/AI/htm_demo.db +0 -0
  11. data/docs/AI/notes_on_htm_implementation.md +1319 -0
  12. data/docs/AI/some_code.rb +692 -0
  13. data/docs/advanced-topics/a2a-protocol.md +13 -0
  14. data/docs/{control_actions.md → advanced-topics/control-actions.md} +2 -0
  15. data/docs/advanced-topics/model-context-protocol.md +4 -0
  16. data/docs/advanced-topics/multi-agent-processing.md +674 -0
  17. data/docs/agent-development/request-response-handling.md +512 -0
  18. data/docs/api-reference/agent99-base.md +463 -0
  19. data/docs/api-reference/message-clients.md +495 -0
  20. data/docs/api-reference/registry-client.md +470 -0
  21. data/docs/api-reference/schemas.md +518 -0
  22. data/docs/assets/css/custom.css +27 -0
  23. data/docs/assets/images/agent-lifecycle.svg +73 -0
  24. data/docs/assets/images/agent-registry-process.svg +86 -0
  25. data/docs/assets/images/agent-registry-processes.svg +114 -0
  26. data/docs/assets/images/agent-types-overview.svg +51 -0
  27. data/docs/assets/images/agent99-architecture.svg +85 -0
  28. data/docs/assets/images/agent99_logo.png +0 -0
  29. data/docs/assets/images/control-actions-state.svg +83 -0
  30. data/docs/assets/images/knowledge-graph.svg +77 -0
  31. data/docs/assets/images/message-processing-flow.svg +148 -0
  32. data/docs/assets/images/multi-agent-system.svg +66 -0
  33. data/docs/assets/images/proxy-pattern-sequence.svg +48 -0
  34. data/docs/assets/images/request-flow.svg +97 -0
  35. data/docs/assets/images/request-processing-lifecycle.svg +50 -0
  36. data/docs/assets/images/request-response-sequence.svg +39 -0
  37. data/docs/{agent_lifecycle.md → core-concepts/agent-lifecycle.md} +2 -0
  38. data/docs/core-concepts/agent-types.md +255 -0
  39. data/docs/{architecture.md → core-concepts/architecture.md} +5 -5
  40. data/docs/{what_is_an_agent.md → core-concepts/what-is-an-agent.md} +1 -1
  41. data/docs/diagrams/message-flow-sequence.svg +198 -0
  42. data/docs/diagrams/p2p-network-topology.svg +181 -0
  43. data/docs/diagrams/smart-transport-routing.svg +165 -0
  44. data/docs/diagrams/three-layer-architecture.svg +77 -0
  45. data/docs/diagrams/transport-extension-api.svg +309 -0
  46. data/docs/diagrams/transport-extension-architecture.svg +234 -0
  47. data/docs/diagrams/transport-selection-flowchart.svg +264 -0
  48. data/docs/examples/advanced-examples.md +951 -0
  49. data/docs/examples/basic-examples.md +268 -0
  50. data/docs/{agent_registry_processes.md → framework-components/agent-registry.md} +1 -1
  51. data/docs/{message_processing.md → framework-components/message-processing.md} +3 -1
  52. data/docs/getting-started/basic-example.md +306 -0
  53. data/docs/getting-started/installation.md +160 -0
  54. data/docs/getting-started/overview.md +64 -0
  55. data/docs/getting-started/quick-start.md +179 -0
  56. data/docs/index.md +97 -0
  57. data/examples/DEMO.md +148 -0
  58. data/examples/README.md +50 -0
  59. data/examples/bad_agent.rb +32 -0
  60. data/examples/registry.rb +0 -8
  61. data/examples/run_demo.rb +433 -0
  62. data/lib/agent99/amqp_message_client.rb +2 -2
  63. data/lib/agent99/base.rb +1 -1
  64. data/lib/agent99/message_processing.rb +6 -12
  65. data/lib/agent99/registry_client.rb +4 -1
  66. data/lib/agent99/version.rb +1 -1
  67. data/lib/agent99.rb +1 -1
  68. data/mkdocs.yml +195 -0
  69. data/p2p_plan.md +533 -0
  70. data/p2p_roadmap.md +299 -0
  71. data/registry_plan.md +1818 -0
  72. metadata +89 -32
  73. data/docs/README.md +0 -57
  74. data/docs/diagrams/agent_registry_processes.dot +0 -42
  75. data/docs/diagrams/agent_registry_processes.png +0 -0
  76. data/docs/diagrams/high_level_architecture.dot +0 -26
  77. data/docs/diagrams/high_level_architecture.png +0 -0
  78. data/docs/diagrams/request_flow.dot +0 -42
  79. data/docs/diagrams/request_flow.png +0 -0
  80. /data/docs/{advanced_features.md → advanced-topics/advanced-features.md} +0 -0
  81. /data/docs/{extending_the_framework.md → advanced-topics/extending-the-framework.md} +0 -0
  82. /data/docs/{custom_agent_implementation.md → agent-development/custom-agent-implementation.md} +0 -0
  83. /data/docs/{error_handling_and_logging.md → agent-development/error-handling-and-logging.md} +0 -0
  84. /data/docs/{schema_definition.md → agent-development/schema-definition.md} +0 -0
  85. /data/docs/{api_reference.md → api-reference/overview.md} +0 -0
  86. /data/docs/{agent_discovery.md → framework-components/agent-discovery.md} +0 -0
  87. /data/docs/{messaging_system.md → framework-components/messaging-system.md} +0 -0
  88. /data/docs/{breaking_change_v0.0.4.md → operations/breaking-changes.md} +0 -0
  89. /data/docs/{configuration.md → operations/configuration.md} +0 -0
  90. /data/docs/{preformance_considerations.md → operations/performance-considerations.md} +0 -0
  91. /data/docs/{security.md → operations/security.md} +0 -0
  92. /data/docs/{troubleshooting.md → operations/troubleshooting.md} +0 -0
@@ -0,0 +1,234 @@
1
+ <svg width="1000" height="700" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Background transparent -->
3
+
4
+ <!-- Title -->
5
+ <text x="500" y="30" text-anchor="middle" fill="#f7fafc"
6
+ font-family="Arial, sans-serif" font-size="20" font-weight="bold">
7
+ SmartMessage Transport Extension Architecture
8
+ </text>
9
+
10
+ <!-- Agent99 Layer -->
11
+ <rect x="50" y="70" width="900" height="80"
12
+ fill="#2d3748" stroke="#4a5568" stroke-width="2" rx="8"/>
13
+ <text x="500" y="100" text-anchor="middle" fill="#e2e8f0"
14
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
15
+ Agent99: Multi-Process Agent Coordination
16
+ </text>
17
+ <text x="500" y="125" text-anchor="middle" fill="#cbd5e0"
18
+ font-family="Arial, sans-serif" font-size="14">
19
+ Coordinates agent objects across multiple processes executing anywhere
20
+ </text>
21
+
22
+ <!-- Enhanced BunnyFarm Layer -->
23
+ <rect x="50" y="170" width="900" height="80"
24
+ fill="#1a365d" stroke="#2c5282" stroke-width="2" rx="8"/>
25
+ <text x="500" y="200" text-anchor="middle" fill="#bee3f8"
26
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
27
+ Enhanced BunnyFarm: Workflow + SmartMessage Integration
28
+ </text>
29
+ <text x="500" y="220" text-anchor="middle" fill="#90cdf4"
30
+ font-family="Arial, sans-serif" font-size="14">
31
+ Message workflows with transport abstraction capabilities
32
+ </text>
33
+
34
+ <!-- SmartMessage Core Layer -->
35
+ <rect x="50" y="270" width="900" height="80"
36
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2" rx="8"/>
37
+ <text x="500" y="300" text-anchor="middle" fill="#e9d5ff"
38
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
39
+ SmartMessage Core: Transport Abstraction + Plugin System
40
+ </text>
41
+ <text x="500" y="320" text-anchor="middle" fill="#c4b5fd"
42
+ font-family="Arial, sans-serif" font-size="14">
43
+ Core gem with Memory + Redis transports, plugin architecture for extensions
44
+ </text>
45
+
46
+ <!-- Transport Extensions Layer -->
47
+ <rect x="50" y="370" width="900" height="120"
48
+ fill="#1a202c" stroke="#2d3748" stroke-width="2" rx="8"/>
49
+ <text x="500" y="400" text-anchor="middle" fill="#f7fafc"
50
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
51
+ Transport Extensions (Plugin Ecosystem)
52
+ </text>
53
+
54
+ <!-- Core Transports -->
55
+ <text x="150" y="430" text-anchor="middle" fill="#a0aec0"
56
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
57
+ Core Transports
58
+ </text>
59
+
60
+ <rect x="80" y="440" width="140" height="40"
61
+ fill="#2f855a" stroke="#48bb78" stroke-width="1" rx="4"/>
62
+ <text x="150" y="465" text-anchor="middle" fill="#f0fff4"
63
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
64
+ Memory
65
+ </text>
66
+ <text x="150" y="475" text-anchor="middle" fill="#c6f6d5"
67
+ font-family="Arial, sans-serif" font-size="9">
68
+ Single Process
69
+ </text>
70
+
71
+ <rect x="240" y="440" width="140" height="40"
72
+ fill="#d69e2e" stroke="#ed8936" stroke-width="1" rx="4"/>
73
+ <text x="310" y="465" text-anchor="middle" fill="#fffbeb"
74
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
75
+ Redis
76
+ </text>
77
+ <text x="310" y="475" text-anchor="middle" fill="#fde68a"
78
+ font-family="Arial, sans-serif" font-size="9">
79
+ Multi-Process Local
80
+ </text>
81
+
82
+ <!-- Extension Transports -->
83
+ <text x="650" y="430" text-anchor="middle" fill="#a0aec0"
84
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
85
+ Extension Gems
86
+ </text>
87
+
88
+ <rect x="420" y="440" width="160" height="40"
89
+ fill="#7c2d12" stroke="#dc2626" stroke-width="1" rx="4"/>
90
+ <text x="500" y="460" text-anchor="middle" fill="#fef2f2"
91
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
92
+ smart_message-
93
+ </text>
94
+ <text x="500" y="470" text-anchor="middle" fill="#fecaca"
95
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
96
+ transport-amqp
97
+ </text>
98
+ <text x="500" y="480" text-anchor="middle" fill="#fca5a5"
99
+ font-family="Arial, sans-serif" font-size="8">
100
+ Enterprise Reliable
101
+ </text>
102
+
103
+ <rect x="600" y="440" width="160" height="40"
104
+ fill="#065f46" stroke="#10b981" stroke-width="1" rx="4"/>
105
+ <text x="680" y="460" text-anchor="middle" fill="#d1fae5"
106
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
107
+ smart_message-
108
+ </text>
109
+ <text x="680" y="470" text-anchor="middle" fill="#a7f3d0"
110
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
111
+ transport-lanet
112
+ </text>
113
+ <text x="680" y="480" text-anchor="middle" fill="#6ee7b7"
114
+ font-family="Arial, sans-serif" font-size="8">
115
+ LAN P2P Direct
116
+ </text>
117
+
118
+ <rect x="780" y="440" width="160" height="40"
119
+ fill="#1e40af" stroke="#3b82f6" stroke-width="1" rx="4"/>
120
+ <text x="860" y="460" text-anchor="middle" fill="#dbeafe"
121
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
122
+ smart_message-
123
+ </text>
124
+ <text x="860" y="470" text-anchor="middle" fill="#bfdbfe"
125
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
126
+ transport-nats
127
+ </text>
128
+ <text x="860" y="480" text-anchor="middle" fill="#93c5fd"
129
+ font-family="Arial, sans-serif" font-size="8">
130
+ High-Perf Distributed
131
+ </text>
132
+
133
+ <!-- Use Cases -->
134
+ <rect x="50" y="510" width="900" height="100"
135
+ fill="#0f172a" stroke="#334155" stroke-width="1" rx="5" opacity="0.9"/>
136
+ <text x="70" y="535" fill="#f1f5f9"
137
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
138
+ Transport Selection Strategy:
139
+ </text>
140
+
141
+ <text x="90" y="555" fill="#10b981"
142
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
143
+ Memory:
144
+ </text>
145
+ <text x="150" y="555" fill="#cbd5e0"
146
+ font-family="Arial, sans-serif" font-size="10">
147
+ Same process agent communication
148
+ </text>
149
+
150
+ <text x="350" y="555" fill="#ed8936"
151
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
152
+ Redis:
153
+ </text>
154
+ <text x="390" y="555" fill="#cbd5e0"
155
+ font-family="Arial, sans-serif" font-size="10">
156
+ Multi-process, same machine
157
+ </text>
158
+
159
+ <text x="90" y="575" fill="#dc2626"
160
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
161
+ AMQP:
162
+ </text>
163
+ <text x="140" y="575" fill="#cbd5e0"
164
+ font-family="Arial, sans-serif" font-size="10">
165
+ Enterprise, guaranteed delivery
166
+ </text>
167
+
168
+ <text x="350" y="575" fill="#10b981"
169
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
170
+ Lanet:
171
+ </text>
172
+ <text x="395" y="575" fill="#cbd5e0"
173
+ font-family="Arial, sans-serif" font-size="10">
174
+ LAN P2P, encrypted, low latency
175
+ </text>
176
+
177
+ <text x="600" y="575" fill="#3b82f6"
178
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
179
+ NATS:
180
+ </text>
181
+ <text x="640" y="575" fill="#cbd5e0"
182
+ font-family="Arial, sans-serif" font-size="10">
183
+ High-throughput, distributed coordination
184
+ </text>
185
+
186
+ <text x="90" y="595" fill="#f1f5f9"
187
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
188
+ Plugin Benefits:
189
+ </text>
190
+ <text x="190" y="595" fill="#cbd5e0"
191
+ font-family="Arial, sans-serif" font-size="10">
192
+ • Modular architecture • Optional dependencies • Independent evolution • Community ecosystem
193
+ </text>
194
+
195
+ <!-- Arrows showing flow -->
196
+ <defs>
197
+ <marker id="arrowhead" markerWidth="10" markerHeight="7"
198
+ refX="9" refY="3.5" orient="auto">
199
+ <polygon points="0 0, 10 3.5, 0 7" fill="#cbd5e0"/>
200
+ </marker>
201
+ </defs>
202
+
203
+ <!-- Flow arrows -->
204
+ <line x1="500" y1="150" x2="500" y2="165"
205
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrowhead)"/>
206
+ <line x1="500" y1="250" x2="500" y2="265"
207
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrowhead)"/>
208
+ <line x1="500" y1="350" x2="500" y2="365"
209
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrowhead)"/>
210
+
211
+ <!-- Gem installation info -->
212
+ <rect x="50" y="630" width="900" height="50"
213
+ fill="#1f2937" stroke="#374151" stroke-width="1" rx="5"/>
214
+ <text x="70" y="650" fill="#f9fafb"
215
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
216
+ Gem Installation:
217
+ </text>
218
+ <text x="70" y="665" fill="#d1d5db"
219
+ font-family="Arial, sans-serif" font-size="10">
220
+ gem 'smart_message' # Core + Memory/Redis
221
+ </text>
222
+ <text x="300" y="665" fill="#d1d5db"
223
+ font-family="Arial, sans-serif" font-size="10">
224
+ gem 'smart_message-transport-amqp' # Enterprise
225
+ </text>
226
+ <text x="550" y="665" fill="#d1d5db"
227
+ font-family="Arial, sans-serif" font-size="10">
228
+ gem 'smart_message-transport-lanet' # P2P
229
+ </text>
230
+ <text x="750" y="665" fill="#d1d5db"
231
+ font-family="Arial, sans-serif" font-size="10">
232
+ gem 'smart_message-transport-nats' # Distributed
233
+ </text>
234
+ </svg>
@@ -0,0 +1,264 @@
1
+ <svg width="1000" height="800" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Background transparent -->
3
+
4
+ <!-- Title -->
5
+ <text x="500" y="30" text-anchor="middle" fill="#f7fafc"
6
+ font-family="Arial, sans-serif" font-size="20" font-weight="bold">
7
+ Agent99 Smart Transport Selection Flow
8
+ </text>
9
+
10
+ <!-- Start -->
11
+ <ellipse cx="500" cy="80" rx="80" ry="30"
12
+ fill="#2d3748" stroke="#4a5568" stroke-width="2"/>
13
+ <text x="500" y="88" text-anchor="middle" fill="#e2e8f0"
14
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
15
+ Agent Message
16
+ </text>
17
+ <text x="500" y="100" text-anchor="middle" fill="#cbd5e0"
18
+ font-family="Arial, sans-serif" font-size="10">
19
+ to Target Agent
20
+ </text>
21
+
22
+ <!-- First Decision: Same Process? -->
23
+ <polygon points="500,150 580,180 500,210 420,180"
24
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2"/>
25
+ <text x="500" y="175" text-anchor="middle" fill="#e9d5ff"
26
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
27
+ Same
28
+ </text>
29
+ <text x="500" y="190" text-anchor="middle" fill="#e9d5ff"
30
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
31
+ Process?
32
+ </text>
33
+
34
+ <!-- Memory Transport -->
35
+ <rect x="200" y="150" width="120" height="60"
36
+ fill="#2f855a" stroke="#48bb78" stroke-width="2" rx="8"/>
37
+ <text x="260" y="175" text-anchor="middle" fill="#f0fff4"
38
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
39
+ Memory
40
+ </text>
41
+ <text x="260" y="190" text-anchor="middle" fill="#c6f6d5"
42
+ font-family="Arial, sans-serif" font-size="10">
43
+ Transport
44
+ </text>
45
+ <text x="260" y="202" text-anchor="middle" fill="#a7f3d0"
46
+ font-family="Arial, sans-serif" font-size="8">
47
+ Instant delivery
48
+ </text>
49
+
50
+ <!-- Second Decision: Same Machine? -->
51
+ <polygon points="500,280 580,310 500,340 420,310"
52
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2"/>
53
+ <text x="500" y="305" text-anchor="middle" fill="#e9d5ff"
54
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
55
+ Same
56
+ </text>
57
+ <text x="500" y="320" text-anchor="middle" fill="#e9d5ff"
58
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
59
+ Machine?
60
+ </text>
61
+
62
+ <!-- Redis Transport -->
63
+ <rect x="200" y="280" width="120" height="60"
64
+ fill="#d69e2e" stroke="#ed8936" stroke-width="2" rx="8"/>
65
+ <text x="260" y="305" text-anchor="middle" fill="#fffbeb"
66
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
67
+ Redis
68
+ </text>
69
+ <text x="260" y="320" text-anchor="middle" fill="#fde68a"
70
+ font-family="Arial, sans-serif" font-size="10">
71
+ Transport
72
+ </text>
73
+ <text x="260" y="332" text-anchor="middle" fill="#fcd34d"
74
+ font-family="Arial, sans-serif" font-size="8">
75
+ Local pub/sub
76
+ </text>
77
+
78
+ <!-- Third Decision: Same LAN? -->
79
+ <polygon points="500,410 580,440 500,470 420,440"
80
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2"/>
81
+ <text x="500" y="435" text-anchor="middle" fill="#e9d5ff"
82
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
83
+ Same
84
+ </text>
85
+ <text x="500" y="450" text-anchor="middle" fill="#e9d5ff"
86
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
87
+ LAN?
88
+ </text>
89
+
90
+ <!-- Lanet Transport -->
91
+ <rect x="200" y="410" width="120" height="60"
92
+ fill="#065f46" stroke="#10b981" stroke-width="2" rx="8"/>
93
+ <text x="260" y="435" text-anchor="middle" fill="#d1fae5"
94
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
95
+ Lanet
96
+ </text>
97
+ <text x="260" y="450" text-anchor="middle" fill="#a7f3d0"
98
+ font-family="Arial, sans-serif" font-size="10">
99
+ Transport
100
+ </text>
101
+ <text x="260" y="462" text-anchor="middle" fill="#6ee7b7"
102
+ font-family="Arial, sans-serif" font-size="8">
103
+ P2P encrypted
104
+ </text>
105
+
106
+ <!-- Fourth Decision: Reliable Required? -->
107
+ <polygon points="500,540 580,570 500,600 420,570"
108
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2"/>
109
+ <text x="500" y="565" text-anchor="middle" fill="#e9d5ff"
110
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
111
+ Reliable
112
+ </text>
113
+ <text x="500" y="580" text-anchor="middle" fill="#e9d5ff"
114
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
115
+ Required?
116
+ </text>
117
+
118
+ <!-- AMQP Transport -->
119
+ <rect x="650" y="540" width="120" height="60"
120
+ fill="#7c2d12" stroke="#dc2626" stroke-width="2" rx="8"/>
121
+ <text x="710" y="565" text-anchor="middle" fill="#fef2f2"
122
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
123
+ AMQP
124
+ </text>
125
+ <text x="710" y="580" text-anchor="middle" fill="#fecaca"
126
+ font-family="Arial, sans-serif" font-size="10">
127
+ Transport
128
+ </text>
129
+ <text x="710" y="592" text-anchor="middle" fill="#fca5a5"
130
+ font-family="Arial, sans-serif" font-size="8">
131
+ Guaranteed delivery
132
+ </text>
133
+
134
+ <!-- NATS Transport -->
135
+ <rect x="650" y="650" width="120" height="60"
136
+ fill="#1e40af" stroke="#3b82f6" stroke-width="2" rx="8"/>
137
+ <text x="710" y="675" text-anchor="middle" fill="#dbeafe"
138
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
139
+ NATS
140
+ </text>
141
+ <text x="710" y="690" text-anchor="middle" fill="#bfdbfe"
142
+ font-family="Arial, sans-serif" font-size="10">
143
+ Transport
144
+ </text>
145
+ <text x="710" y="702" text-anchor="middle" fill="#93c5fd"
146
+ font-family="Arial, sans-serif" font-size="8">
147
+ High performance
148
+ </text>
149
+
150
+ <!-- Arrow definitions -->
151
+ <defs>
152
+ <marker id="greenarrow" markerWidth="10" markerHeight="7"
153
+ refX="9" refY="3.5" orient="auto">
154
+ <polygon points="0 0, 10 3.5, 0 7" fill="#10b981"/>
155
+ </marker>
156
+ <marker id="redarrow" markerWidth="10" markerHeight="7"
157
+ refX="9" refY="3.5" orient="auto">
158
+ <polygon points="0 0, 10 3.5, 0 7" fill="#dc2626"/>
159
+ </marker>
160
+ <marker id="bluearrow" markerWidth="10" markerHeight="7"
161
+ refX="9" refY="3.5" orient="auto">
162
+ <polygon points="0 0, 10 3.5, 0 7" fill="#3b82f6"/>
163
+ </marker>
164
+ <marker id="purplearrow" markerWidth="10" markerHeight="7"
165
+ refX="9" refY="3.5" orient="auto">
166
+ <polygon points="0 0, 10 3.5, 0 7" fill="#7c3aed"/>
167
+ </marker>
168
+ </defs>
169
+
170
+ <!-- Flow arrows -->
171
+ <line x1="500" y1="110" x2="500" y2="145"
172
+ stroke="#7c3aed" stroke-width="2" marker-end="url(#purplearrow)"/>
173
+
174
+ <!-- Yes paths -->
175
+ <line x1="420" y1="180" x2="330" y2="180"
176
+ stroke="#10b981" stroke-width="2" marker-end="url(#greenarrow)"/>
177
+ <text x="375" y="175" text-anchor="middle" fill="#10b981"
178
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
179
+ YES
180
+ </text>
181
+
182
+ <line x1="420" y1="310" x2="330" y2="310"
183
+ stroke="#10b981" stroke-width="2" marker-end="url(#greenarrow)"/>
184
+ <text x="375" y="305" text-anchor="middle" fill="#10b981"
185
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
186
+ YES
187
+ </text>
188
+
189
+ <line x1="420" y1="440" x2="330" y2="440"
190
+ stroke="#10b981" stroke-width="2" marker-end="url(#greenarrow)"/>
191
+ <text x="375" y="435" text-anchor="middle" fill="#10b981"
192
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
193
+ YES
194
+ </text>
195
+
196
+ <line x1="580" y1="570" x2="640" y2="570"
197
+ stroke="#dc2626" stroke-width="2" marker-end="url(#redarrow)"/>
198
+ <text x="610" y="565" text-anchor="middle" fill="#dc2626"
199
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
200
+ YES
201
+ </text>
202
+
203
+ <!-- No paths -->
204
+ <line x1="500" y1="210" x2="500" y2="275"
205
+ stroke="#7c3aed" stroke-width="2" marker-end="url(#purplearrow)"/>
206
+ <text x="515" y="240" fill="#7c3aed"
207
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
208
+ NO
209
+ </text>
210
+
211
+ <line x1="500" y1="340" x2="500" y2="405"
212
+ stroke="#7c3aed" stroke-width="2" marker-end="url(#purplearrow)"/>
213
+ <text x="515" y="370" fill="#7c3aed"
214
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
215
+ NO
216
+ </text>
217
+
218
+ <line x1="500" y1="470" x2="500" y2="535"
219
+ stroke="#7c3aed" stroke-width="2" marker-end="url(#purplearrow)"/>
220
+ <text x="515" y="500" fill="#7c3aed"
221
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
222
+ NO
223
+ </text>
224
+
225
+ <line x1="500" y1="600" x2="650" y2="680"
226
+ stroke="#3b82f6" stroke-width="2" marker-end="url(#bluearrow)"/>
227
+ <text x="575" y="635" text-anchor="middle" fill="#3b82f6"
228
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
229
+ NO
230
+ </text>
231
+
232
+ <!-- Performance characteristics -->
233
+ <rect x="50" y="730" width="900" height="50"
234
+ fill="#0f172a" stroke="#334155" stroke-width="1" rx="5" opacity="0.9"/>
235
+ <text x="70" y="750" fill="#f1f5f9"
236
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
237
+ Performance Characteristics:
238
+ </text>
239
+ <text x="70" y="765" fill="#10b981"
240
+ font-family="Arial, sans-serif" font-size="10">
241
+ Memory: ~1μs •
242
+ </text>
243
+ <text x="170" y="765" fill="#ed8936"
244
+ font-family="Arial, sans-serif" font-size="10">
245
+ Redis: ~100μs •
246
+ </text>
247
+ <text x="280" y="765" fill="#10b981"
248
+ font-family="Arial, sans-serif" font-size="10">
249
+ Lanet: ~1ms •
250
+ </text>
251
+ <text x="370" y="765" fill="#dc2626"
252
+ font-family="Arial, sans-serif" font-size="10">
253
+ AMQP: ~5ms •
254
+ </text>
255
+ <text x="460" y="765" fill="#3b82f6"
256
+ font-family="Arial, sans-serif" font-size="10">
257
+ NATS: ~2ms
258
+ </text>
259
+
260
+ <text x="600" y="765" fill="#a0aec0"
261
+ font-family="Arial, sans-serif" font-size="10">
262
+ (Estimated latency, varies by network and load)
263
+ </text>
264
+ </svg>