agent99 0.0.3 → 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 (103) hide show
  1. checksums.yaml +4 -4
  2. data/A2A_SPEC-dev.md +1829 -0
  3. data/CHANGELOG.md +38 -0
  4. data/COMMITS.md +196 -0
  5. data/DOCS.md +96 -0
  6. data/README.md +212 -84
  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/{advanced_features.md → advanced-topics/advanced-features.md} +9 -4
  15. data/docs/{control_actions.md → advanced-topics/control-actions.md} +2 -0
  16. data/docs/advanced-topics/model-context-protocol.md +4 -0
  17. data/docs/advanced-topics/multi-agent-processing.md +674 -0
  18. data/docs/agent-development/request-response-handling.md +512 -0
  19. data/docs/agent99_framework/central_registry.md +94 -0
  20. data/docs/agent99_framework/message_client.md +120 -0
  21. data/docs/agent99_framework/registry_client.md +119 -0
  22. data/docs/api-reference/agent99-base.md +463 -0
  23. data/docs/api-reference/message-clients.md +495 -0
  24. data/docs/{api_reference.md → api-reference/overview.md} +14 -4
  25. data/docs/api-reference/registry-client.md +470 -0
  26. data/docs/api-reference/schemas.md +518 -0
  27. data/docs/assets/css/custom.css +27 -0
  28. data/docs/assets/images/agent-lifecycle.svg +73 -0
  29. data/docs/assets/images/agent-registry-process.svg +86 -0
  30. data/docs/assets/images/agent-registry-processes.svg +114 -0
  31. data/docs/assets/images/agent-types-overview.svg +51 -0
  32. data/docs/assets/images/agent99-architecture.svg +85 -0
  33. data/docs/assets/images/agent99_logo.png +0 -0
  34. data/docs/assets/images/control-actions-state.svg +83 -0
  35. data/docs/assets/images/knowledge-graph.svg +77 -0
  36. data/docs/assets/images/message-processing-flow.svg +148 -0
  37. data/docs/assets/images/multi-agent-system.svg +66 -0
  38. data/docs/assets/images/proxy-pattern-sequence.svg +48 -0
  39. data/docs/assets/images/request-flow.svg +97 -0
  40. data/docs/assets/images/request-processing-lifecycle.svg +50 -0
  41. data/docs/assets/images/request-response-sequence.svg +39 -0
  42. data/docs/{agent_lifecycle.md → core-concepts/agent-lifecycle.md} +2 -0
  43. data/docs/core-concepts/agent-types.md +255 -0
  44. data/docs/{architecture.md → core-concepts/architecture.md} +5 -5
  45. data/docs/core-concepts/what-is-an-agent.md +293 -0
  46. data/docs/diagrams/message-flow-sequence.svg +198 -0
  47. data/docs/diagrams/p2p-network-topology.svg +181 -0
  48. data/docs/diagrams/smart-transport-routing.svg +165 -0
  49. data/docs/diagrams/three-layer-architecture.svg +77 -0
  50. data/docs/diagrams/transport-extension-api.svg +309 -0
  51. data/docs/diagrams/transport-extension-architecture.svg +234 -0
  52. data/docs/diagrams/transport-selection-flowchart.svg +264 -0
  53. data/docs/examples/advanced-examples.md +951 -0
  54. data/docs/examples/basic-examples.md +268 -0
  55. data/docs/{agent_discovery.md → framework-components/agent-discovery.md} +9 -5
  56. data/docs/{agent_registry_processes.md → framework-components/agent-registry.md} +9 -3
  57. data/docs/{message_processing.md → framework-components/message-processing.md} +3 -1
  58. data/docs/getting-started/basic-example.md +306 -0
  59. data/docs/getting-started/installation.md +160 -0
  60. data/docs/getting-started/overview.md +64 -0
  61. data/docs/getting-started/quick-start.md +179 -0
  62. data/docs/index.md +97 -0
  63. data/docs/operations/breaking-changes.md +26 -0
  64. data/examples/DEMO.md +148 -0
  65. data/examples/README.md +50 -0
  66. data/examples/agent_watcher.rb +5 -1
  67. data/examples/bad_agent.rb +32 -0
  68. data/examples/chief_agent.rb +17 -6
  69. data/examples/control.rb +16 -7
  70. data/examples/example_agent.rb +16 -3
  71. data/examples/maxwell_agent86.rb +15 -26
  72. data/examples/registry.rb +10 -9
  73. data/examples/run_demo.rb +433 -0
  74. data/lib/agent99/agent_discovery.rb +4 -0
  75. data/lib/agent99/agent_lifecycle.rb +34 -10
  76. data/lib/agent99/amqp_message_client.rb +2 -2
  77. data/lib/agent99/base.rb +6 -2
  78. data/lib/agent99/message_processing.rb +6 -10
  79. data/lib/agent99/registry_client.rb +15 -11
  80. data/lib/agent99/tcp_message_client.rb +183 -0
  81. data/lib/agent99/version.rb +1 -1
  82. data/lib/agent99.rb +1 -1
  83. data/mkdocs.yml +195 -0
  84. data/p2p_plan.md +533 -0
  85. data/p2p_roadmap.md +299 -0
  86. data/registry_plan.md +1818 -0
  87. metadata +93 -30
  88. data/docs/README.md +0 -57
  89. data/docs/diagrams/agent_registry_processes.dot +0 -42
  90. data/docs/diagrams/agent_registry_processes.png +0 -0
  91. data/docs/diagrams/high_level_architecture.dot +0 -26
  92. data/docs/diagrams/high_level_architecture.png +0 -0
  93. data/docs/diagrams/request_flow.dot +0 -42
  94. data/docs/diagrams/request_flow.png +0 -0
  95. /data/docs/{extending_the_framework.md → advanced-topics/extending-the-framework.md} +0 -0
  96. /data/docs/{custom_agent_implementation.md → agent-development/custom-agent-implementation.md} +0 -0
  97. /data/docs/{error_handling_and_logging.md → agent-development/error-handling-and-logging.md} +0 -0
  98. /data/docs/{schema_definition.md → agent-development/schema-definition.md} +0 -0
  99. /data/docs/{messaging_system.md → framework-components/messaging-system.md} +0 -0
  100. /data/docs/{configuration.md → operations/configuration.md} +0 -0
  101. /data/docs/{preformance_considerations.md → operations/performance-considerations.md} +0 -0
  102. /data/docs/{security.md → operations/security.md} +0 -0
  103. /data/docs/{troubleshooting.md → operations/troubleshooting.md} +0 -0
@@ -0,0 +1,309 @@
1
+ <svg width="1000" height="900" 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 API Design
8
+ </text>
9
+
10
+ <!-- Core SmartMessage Interface -->
11
+ <rect x="50" y="70" width="900" height="120"
12
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2" rx="8"/>
13
+ <text x="500" y="100" text-anchor="middle" fill="#e9d5ff"
14
+ font-family="Arial, sans-serif" font-size="16" font-weight="bold">
15
+ SmartMessage::Transport::Base (Core Interface)
16
+ </text>
17
+
18
+ <!-- Core methods -->
19
+ <text x="80" y="125" fill="#c4b5fd"
20
+ font-family="monospace" font-size="11" font-weight="bold">
21
+ def publish(message, options = {})
22
+ </text>
23
+ <text x="350" y="125" fill="#c4b5fd"
24
+ font-family="monospace" font-size="11" font-weight="bold">
25
+ def subscribe(queue, &amp;block)
26
+ </text>
27
+ <text x="620" y="125" fill="#c4b5fd"
28
+ font-family="monospace" font-size="11" font-weight="bold">
29
+ def connect
30
+ </text>
31
+ <text x="750" y="125" fill="#c4b5fd"
32
+ font-family="monospace" font-size="11" font-weight="bold">
33
+ def disconnect
34
+ </text>
35
+
36
+ <text x="80" y="145" fill="#c4b5fd"
37
+ font-family="monospace" font-size="11" font-weight="bold">
38
+ def setup(config)
39
+ </text>
40
+ <text x="250" y="145" fill="#c4b5fd"
41
+ font-family="monospace" font-size="11" font-weight="bold">
42
+ def healthy?
43
+ </text>
44
+ <text x="380" y="145" fill="#c4b5fd"
45
+ font-family="monospace" font-size="11" font-weight="bold">
46
+ def stats
47
+ </text>
48
+ <text x="500" y="145" fill="#c4b5fd"
49
+ font-family="monospace" font-size="11" font-weight="bold">
50
+ def cleanup
51
+ </text>
52
+
53
+ <text x="80" y="165" fill="#a78bfa"
54
+ font-family="Arial, sans-serif" font-size="10">
55
+ Required methods all transport extensions must implement
56
+ </text>
57
+
58
+ <!-- Extension Implementations -->
59
+
60
+ <!-- AMQP Extension -->
61
+ <rect x="50" y="220" width="430" height="160"
62
+ fill="#7c2d12" stroke="#dc2626" stroke-width="2" rx="8" opacity="0.9"/>
63
+ <text x="265" y="245" text-anchor="middle" fill="#fef2f2"
64
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
65
+ smart_message-transport-amqp
66
+ </text>
67
+
68
+ <text x="70" y="270" fill="#fecaca"
69
+ font-family="monospace" font-size="10">
70
+ class SmartMessage::Transport::AMQP &lt; Base
71
+ </text>
72
+ <text x="70" y="290" fill="#fecaca"
73
+ font-family="monospace" font-size="9">
74
+ def publish(message, options = {})
75
+ </text>
76
+ <text x="90" y="305" fill="#fca5a5"
77
+ font-family="monospace" font-size="9">
78
+ @bunny_exchange.publish(message.to_json,
79
+ </text>
80
+ <text x="90" y="320" fill="#fca5a5"
81
+ font-family="monospace" font-size="9">
82
+ routing_key: message.to)
83
+ </text>
84
+ <text x="70" y="340" fill="#fecaca"
85
+ font-family="monospace" font-size="9">
86
+ def subscribe(queue, &amp;block)
87
+ </text>
88
+ <text x="90" y="355" fill="#fca5a5"
89
+ font-family="monospace" font-size="9">
90
+ @bunny_queue.subscribe do |delivery, props, body|
91
+ </text>
92
+ <text x="90" y="370" fill="#fca5a5"
93
+ font-family="monospace" font-size="9">
94
+ yield SmartMessage.parse(body)
95
+ </text>
96
+
97
+ <!-- Lanet Extension -->
98
+ <rect x="520" y="220" width="430" height="160"
99
+ fill="#065f46" stroke="#10b981" stroke-width="2" rx="8" opacity="0.9"/>
100
+ <text x="735" y="245" text-anchor="middle" fill="#d1fae5"
101
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
102
+ smart_message-transport-lanet
103
+ </text>
104
+
105
+ <text x="540" y="270" fill="#a7f3d0"
106
+ font-family="monospace" font-size="10">
107
+ class SmartMessage::Transport::Lanet &lt; Base
108
+ </text>
109
+ <text x="540" y="290" fill="#a7f3d0"
110
+ font-family="monospace" font-size="9">
111
+ def publish(message, options = {})
112
+ </text>
113
+ <text x="560" y="305" fill="#6ee7b7"
114
+ font-family="monospace" font-size="9">
115
+ target_ip = resolve_agent_ip(message.to)
116
+ </text>
117
+ <text x="560" y="320" fill="#6ee7b7"
118
+ font-family="monospace" font-size="9">
119
+ @lanet.send_to(target_ip, message.to_json)
120
+ </text>
121
+ <text x="540" y="340" fill="#a7f3d0"
122
+ font-family="monospace" font-size="9">
123
+ def subscribe(queue, &amp;block)
124
+ </text>
125
+ <text x="560" y="355" fill="#6ee7b7"
126
+ font-family="monospace" font-size="9">
127
+ @lanet.listen do |msg|
128
+ </text>
129
+ <text x="560" y="370" fill="#6ee7b7"
130
+ font-family="monospace" font-size="9">
131
+ yield SmartMessage.parse(msg)
132
+ </text>
133
+
134
+ <!-- NATS Extension -->
135
+ <rect x="50" y="410" width="430" height="160"
136
+ fill="#1e40af" stroke="#3b82f6" stroke-width="2" rx="8" opacity="0.9"/>
137
+ <text x="265" y="435" text-anchor="middle" fill="#dbeafe"
138
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
139
+ smart_message-transport-nats
140
+ </text>
141
+
142
+ <text x="70" y="460" fill="#bfdbfe"
143
+ font-family="monospace" font-size="10">
144
+ class SmartMessage::Transport::NATS &lt; Base
145
+ </text>
146
+ <text x="70" y="480" fill="#bfdbfe"
147
+ font-family="monospace" font-size="9">
148
+ def publish(message, options = {})
149
+ </text>
150
+ <text x="90" y="495" fill="#93c5fd"
151
+ font-family="monospace" font-size="9">
152
+ subject = build_subject(message)
153
+ </text>
154
+ <text x="90" y="510" fill="#93c5fd"
155
+ font-family="monospace" font-size="9">
156
+ @nats.publish(subject, message.to_json)
157
+ </text>
158
+ <text x="70" y="530" fill="#bfdbfe"
159
+ font-family="monospace" font-size="9">
160
+ def subscribe(queue, &amp;block)
161
+ </text>
162
+ <text x="90" y="545" fill="#93c5fd"
163
+ font-family="monospace" font-size="9">
164
+ @nats.subscribe(queue) do |msg|
165
+ </text>
166
+ <text x="90" y="560" fill="#93c5fd"
167
+ font-family="monospace" font-size="9">
168
+ yield SmartMessage.parse(msg.data)
169
+ </text>
170
+
171
+ <!-- Plugin Registration -->
172
+ <rect x="520" y="410" width="430" height="160"
173
+ fill="#1f2937" stroke="#374151" stroke-width="2" rx="8" opacity="0.9"/>
174
+ <text x="735" y="435" text-anchor="middle" fill="#f9fafb"
175
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
176
+ Plugin Registration System
177
+ </text>
178
+
179
+ <text x="540" y="460" fill="#e5e7eb"
180
+ font-family="monospace" font-size="10">
181
+ SmartMessage::Transport.register(:amqp) do
182
+ </text>
183
+ <text x="560" y="475" fill="#d1d5db"
184
+ font-family="monospace" font-size="9">
185
+ SmartMessage::Transport::AMQP
186
+ </text>
187
+ <text x="540" y="490" fill="#e5e7eb"
188
+ font-family="monospace" font-size="10">
189
+ end
190
+ </text>
191
+
192
+ <text x="540" y="510" fill="#e5e7eb"
193
+ font-family="monospace" font-size="10">
194
+ SmartMessage::Transport.register(:lanet) do
195
+ </text>
196
+ <text x="560" y="525" fill="#d1d5db"
197
+ font-family="monospace" font-size="9">
198
+ SmartMessage::Transport::Lanet
199
+ </text>
200
+ <text x="540" y="540" fill="#e5e7eb"
201
+ font-family="monospace" font-size="10">
202
+ end
203
+ </text>
204
+
205
+ <text x="540" y="555" fill="#9ca3af"
206
+ font-family="Arial, sans-serif" font-size="9">
207
+ Auto-discovered when gem is loaded
208
+ </text>
209
+
210
+ <!-- Usage Examples -->
211
+ <rect x="50" y="600" width="900" height="120"
212
+ fill="#0f172a" stroke="#334155" stroke-width="2" rx="8" opacity="0.9"/>
213
+ <text x="500" y="625" text-anchor="middle" fill="#f1f5f9"
214
+ font-family="Arial, sans-serif" font-size="16" font-weight="bold">
215
+ Usage Examples
216
+ </text>
217
+
218
+ <text x="70" y="650" fill="#60a5fa"
219
+ font-family="monospace" font-size="11" font-weight="bold">
220
+ # Agent99 with enhanced BunnyFarm
221
+ </text>
222
+ <text x="70" y="665" fill="#93c5fd"
223
+ font-family="monospace" font-size="10">
224
+ class CapabilityRequest &lt; SmartMessage::Base
225
+ </text>
226
+ <text x="90" y="680" fill="#bfdbfe"
227
+ font-family="monospace" font-size="10">
228
+ config do
229
+ </text>
230
+ <text x="110" y="695" fill="#dbeafe"
231
+ font-family="monospace" font-size="10">
232
+ transport :amqp # or :lanet, :nats, :redis, :memory
233
+ </text>
234
+ <text x="90" y="710" fill="#bfdbfe"
235
+ font-family="monospace" font-size="10">
236
+ end
237
+ </text>
238
+
239
+ <text x="500" y="650" fill="#fbbf24"
240
+ font-family="monospace" font-size="11" font-weight="bold">
241
+ # Dynamic transport selection
242
+ </text>
243
+ <text x="500" y="665" fill="#fcd34d"
244
+ font-family="monospace" font-size="10">
245
+ message.config do
246
+ </text>
247
+ <text x="520" y="680" fill="#fde68a"
248
+ font-family="monospace" font-size="10">
249
+ transport select_transport(target_agent)
250
+ </text>
251
+ <text x="500" y="695" fill="#fcd34d"
252
+ font-family="monospace" font-size="10">
253
+ end
254
+ </text>
255
+ <text x="500" y="710" fill="#fcd34d"
256
+ font-family="monospace" font-size="10">
257
+ message.publish
258
+ </text>
259
+
260
+ <!-- Configuration -->
261
+ <rect x="50" y="750" width="900" height="120"
262
+ fill="#1a202c" stroke="#2d3748" stroke-width="1" rx="5" opacity="0.9"/>
263
+ <text x="500" y="775" text-anchor="middle" fill="#f7fafc"
264
+ font-family="Arial, sans-serif" font-size="16" font-weight="bold">
265
+ Configuration &amp; Installation
266
+ </text>
267
+
268
+ <text x="70" y="800" fill="#68d391"
269
+ font-family="monospace" font-size="11" font-weight="bold">
270
+ # Gemfile
271
+ </text>
272
+ <text x="70" y="815" fill="#9ae6b4"
273
+ font-family="monospace" font-size="10">
274
+ gem 'smart_message' # Core + Memory/Redis
275
+ </text>
276
+ <text x="70" y="830" fill="#9ae6b4"
277
+ font-family="monospace" font-size="10">
278
+ gem 'smart_message-transport-amqp' # Enterprise messaging
279
+ </text>
280
+ <text x="70" y="845" fill="#9ae6b4"
281
+ font-family="monospace" font-size="10">
282
+ gem 'smart_message-transport-lanet' # P2P LAN optimization
283
+ </text>
284
+ <text x="70" y="860" fill="#9ae6b4"
285
+ font-family="monospace" font-size="10">
286
+ gem 'smart_message-transport-nats' # High-performance distributed
287
+ </text>
288
+
289
+ <text x="500" y="800" fill="#fbb6ce"
290
+ font-family="monospace" font-size="11" font-weight="bold">
291
+ # Auto-registration on require
292
+ </text>
293
+ <text x="500" y="815" fill="#f687b3"
294
+ font-family="monospace" font-size="10">
295
+ require 'smart_message-transport-amqp'
296
+ </text>
297
+ <text x="500" y="830" fill="#f687b3"
298
+ font-family="monospace" font-size="10">
299
+ # Transport now available as :amqp
300
+ </text>
301
+ <text x="500" y="845" fill="#f687b3"
302
+ font-family="monospace" font-size="10">
303
+ SmartMessage::Transport.available_transports
304
+ </text>
305
+ <text x="500" y="860" fill="#f687b3"
306
+ font-family="monospace" font-size="10">
307
+ # => [:memory, :redis, :amqp]
308
+ </text>
309
+ </svg>
@@ -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>