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,198 @@
1
+ <svg width="1100" height="800" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Background transparent -->
3
+
4
+ <!-- Title -->
5
+ <text x="550" y="30" text-anchor="middle" fill="#f7fafc"
6
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
7
+ Agent99 + SmartMessage + Lanet Message Flow
8
+ </text>
9
+
10
+ <!-- Entity columns -->
11
+ <line x1="150" y1="60" x2="150" y2="750" stroke="#4a5568" stroke-width="2"/>
12
+ <rect x="80" y="60" width="140" height="40" fill="#1a365d" stroke="#3182ce" stroke-width="2" rx="5"/>
13
+ <text x="150" y="85" text-anchor="middle" fill="#bee3f8"
14
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
15
+ Source Agent
16
+ </text>
17
+
18
+ <line x1="350" y1="60" x2="350" y2="750" stroke="#4a5568" stroke-width="2"/>
19
+ <rect x="275" y="60" width="150" height="40" fill="#553c9a" stroke="#7c3aed" stroke-width="2" rx="5"/>
20
+ <text x="350" y="85" text-anchor="middle" fill="#e9d5ff"
21
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
22
+ SmartMessage
23
+ </text>
24
+
25
+ <line x1="550" y1="60" x2="550" y2="750" stroke="#4a5568" stroke-width="2"/>
26
+ <rect x="480" y="60" width="140" height="40" fill="#065f46" stroke="#10b981" stroke-width="2" rx="5"/>
27
+ <text x="550" y="85" text-anchor="middle" fill="#d1fae5"
28
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
29
+ Lanet Transport
30
+ </text>
31
+
32
+ <line x1="750" y1="60" x2="750" y2="750" stroke="#4a5568" stroke-width="2"/>
33
+ <rect x="680" y="60" width="140" height="40" fill="#92400e" stroke="#f59e0b" stroke-width="2" rx="5"/>
34
+ <text x="750" y="85" text-anchor="middle" fill="#fef3c7"
35
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
36
+ NATS/AMQP
37
+ </text>
38
+
39
+ <line x1="950" y1="60" x2="950" y2="750" stroke="#4a5568" stroke-width="2"/>
40
+ <rect x="880" y="60" width="140" height="40" fill="#2d3748" stroke="#4a5568" stroke-width="2" rx="5"/>
41
+ <text x="950" y="85" text-anchor="middle" fill="#e2e8f0"
42
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
43
+ Target Agent
44
+ </text>
45
+
46
+ <!-- Arrow definitions -->
47
+ <defs>
48
+ <marker id="arrow" markerWidth="10" markerHeight="7"
49
+ refX="9" refY="3.5" orient="auto">
50
+ <polygon points="0 0, 10 3.5, 0 7" fill="#cbd5e0"/>
51
+ </marker>
52
+ <marker id="greenarrow" markerWidth="10" markerHeight="7"
53
+ refX="9" refY="3.5" orient="auto">
54
+ <polygon points="0 0, 10 3.5, 0 7" fill="#10b981"/>
55
+ </marker>
56
+ <marker id="yellowarrow" markerWidth="10" markerHeight="7"
57
+ refX="9" refY="3.5" orient="auto">
58
+ <polygon points="0 0, 10 3.5, 0 7" fill="#f59e0b"/>
59
+ </marker>
60
+ </defs>
61
+
62
+ <!-- Message Flow Steps -->
63
+
64
+ <!-- Step 1: Agent publishes message -->
65
+ <line x1="150" y1="130" x2="340" y2="130"
66
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrow)"/>
67
+ <text x="245" y="125" text-anchor="middle" fill="#cbd5e0"
68
+ font-family="Arial, sans-serif" font-size="10">
69
+ 1. publish(:greeting, to: 'target_uuid')
70
+ </text>
71
+
72
+ <!-- Step 2: SmartMessage routing decision -->
73
+ <rect x="270" y="150" width="160" height="60"
74
+ fill="#44337a" stroke="#7c3aed" stroke-width="2" rx="5" opacity="0.8"/>
75
+ <text x="350" y="170" text-anchor="middle" fill="#e9d5ff"
76
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
77
+ 2. Transport Selection
78
+ </text>
79
+ <text x="350" y="185" text-anchor="middle" fill="#c4b5fd"
80
+ font-family="Arial, sans-serif" font-size="10">
81
+ Check: same_lan?(target)
82
+ </text>
83
+ <text x="350" y="200" text-anchor="middle" fill="#c4b5fd"
84
+ font-family="Arial, sans-serif" font-size="10">
85
+ → Use Lanet for LAN
86
+ </text>
87
+
88
+ <!-- Step 3a: LAN route (Lanet) -->
89
+ <line x1="350" y1="230" x2="540" y2="250"
90
+ stroke="#10b981" stroke-width="3" marker-end="url(#greenarrow)"/>
91
+ <text x="445" y="235" text-anchor="middle" fill="#10b981"
92
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
93
+ 3a. LAN: Lanet.send_to(ip, message)
94
+ </text>
95
+
96
+ <!-- Step 3b: WAN route (NATS/AMQP) -->
97
+ <line x1="350" y1="280" x2="740" y2="300"
98
+ stroke="#f59e0b" stroke-width="2" stroke-dasharray="8,4" marker-end="url(#yellowarrow)"/>
99
+ <text x="545" y="285" text-anchor="middle" fill="#f59e0b"
100
+ font-family="Arial, sans-serif" font-size="10">
101
+ 3b. WAN: broker.publish(queue, message)
102
+ </text>
103
+
104
+ <!-- Step 4a: Lanet direct delivery -->
105
+ <line x1="550" y1="330" x2="940" y2="350"
106
+ stroke="#10b981" stroke-width="3" marker-end="url(#greenarrow)"/>
107
+ <text x="745" y="335" text-anchor="middle" fill="#10b981"
108
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
109
+ 4a. Direct P2P delivery (encrypted)
110
+ </text>
111
+
112
+ <!-- Step 4b: Broker delivery -->
113
+ <line x1="750" y1="380" x2="940" y2="400"
114
+ stroke="#f59e0b" stroke-width="2" stroke-dasharray="8,4" marker-end="url(#yellowarrow)"/>
115
+ <text x="845" y="385" text-anchor="middle" fill="#f59e0b"
116
+ font-family="Arial, sans-serif" font-size="10">
117
+ 4b. Broker delivery
118
+ </text>
119
+
120
+ <!-- Step 5: Message processing -->
121
+ <rect x="870" y="430" width="160" height="60"
122
+ fill="#1f2937" stroke="#4b5563" stroke-width="2" rx="5" opacity="0.8"/>
123
+ <text x="950" y="450" text-anchor="middle" fill="#e5e7eb"
124
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
125
+ 5. Process Message
126
+ </text>
127
+ <text x="950" y="465" text-anchor="middle" fill="#d1d5db"
128
+ font-family="Arial, sans-serif" font-size="10">
129
+ SmartMessage.handle()
130
+ </text>
131
+ <text x="950" y="480" text-anchor="middle" fill="#d1d5db"
132
+ font-family="Arial, sans-serif" font-size="10">
133
+ → Agent business logic
134
+ </text>
135
+
136
+ <!-- Response flow -->
137
+ <text x="550" y="540" text-anchor="middle" fill="#cbd5e0"
138
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
139
+ Response Flow (Same Path in Reverse)
140
+ </text>
141
+
142
+ <!-- Response step 6 -->
143
+ <line x1="950" y1="570" x2="360" y2="590"
144
+ stroke="#a78bfa" stroke-width="2" stroke-dasharray="3,3" marker-end="url(#arrow)"/>
145
+ <text x="655" y="575" text-anchor="middle" fill="#a78bfa"
146
+ font-family="Arial, sans-serif" font-size="10">
147
+ 6. Response via same transport path
148
+ </text>
149
+
150
+ <!-- Response step 7 -->
151
+ <line x1="350" y1="620" x2="160" y2="640"
152
+ stroke="#a78bfa" stroke-width="2" stroke-dasharray="3,3" marker-end="url(#arrow)"/>
153
+ <text x="255" y="625" text-anchor="middle" fill="#a78bfa"
154
+ font-family="Arial, sans-serif" font-size="10">
155
+ 7. Delivered to source agent
156
+ </text>
157
+
158
+ <!-- Benefits box -->
159
+ <rect x="50" y="680" width="1000" height="60"
160
+ fill="#0f172a" stroke="#334155" stroke-width="1" rx="5" opacity="0.9"/>
161
+ <text x="70" y="705" fill="#f1f5f9"
162
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
163
+ Benefits:
164
+ </text>
165
+ <text x="140" y="705" fill="#cbd5e0"
166
+ font-family="Arial, sans-serif" font-size="11">
167
+ • Automatic transport selection
168
+ </text>
169
+ <text x="320" y="705" fill="#cbd5e0"
170
+ font-family="Arial, sans-serif" font-size="11">
171
+ • Unified API regardless of transport
172
+ </text>
173
+ <text x="520" y="705" fill="#cbd5e0"
174
+ font-family="Arial, sans-serif" font-size="11">
175
+ • LAN optimization with Lanet P2P
176
+ </text>
177
+ <text x="720" y="705" fill="#cbd5e0"
178
+ font-family="Arial, sans-serif" font-size="11">
179
+ • WAN fallback with brokers
180
+ </text>
181
+
182
+ <text x="140" y="725" fill="#cbd5e0"
183
+ font-family="Arial, sans-serif" font-size="11">
184
+ • Built-in encryption/security
185
+ </text>
186
+ <text x="320" y="725" fill="#cbd5e0"
187
+ font-family="Arial, sans-serif" font-size="11">
188
+ • Clean separation of concerns
189
+ </text>
190
+ <text x="520" y="725" fill="#cbd5e0"
191
+ font-family="Arial, sans-serif" font-size="11">
192
+ • Transparent to Agent99 logic
193
+ </text>
194
+ <text x="720" y="725" fill="#cbd5e0"
195
+ font-family="Arial, sans-serif" font-size="11">
196
+ • Extensible plugin architecture
197
+ </text>
198
+ </svg>
@@ -0,0 +1,181 @@
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
+ Agent99 Hybrid P2P Network Topology
8
+ </text>
9
+
10
+ <!-- LAN 1 -->
11
+ <rect x="50" y="80" width="400" height="250"
12
+ fill="none" stroke="#10b981" stroke-width="2" stroke-dasharray="10,5" rx="15"/>
13
+ <text x="250" y="105" text-anchor="middle" fill="#10b981"
14
+ font-family="Arial, sans-serif" font-size="16" font-weight="bold">
15
+ LAN Segment 1 (192.168.1.0/24)
16
+ </text>
17
+
18
+ <!-- LAN 2 -->
19
+ <rect x="550" y="80" width="400" height="250"
20
+ fill="none" stroke="#3b82f6" stroke-width="2" stroke-dasharray="10,5" rx="15"/>
21
+ <text x="750" y="105" text-anchor="middle" fill="#3b82f6"
22
+ font-family="Arial, sans-serif" font-size="16" font-weight="bold">
23
+ LAN Segment 2 (192.168.2.0/24)
24
+ </text>
25
+
26
+ <!-- Registry Server -->
27
+ <rect x="425" y="400" width="150" height="80"
28
+ fill="#7c2d12" stroke="#dc2626" stroke-width="3" rx="10"/>
29
+ <text x="500" y="430" text-anchor="middle" fill="#fef2f2"
30
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
31
+ Agent Registry
32
+ </text>
33
+ <text x="500" y="450" text-anchor="middle" fill="#fecaca"
34
+ font-family="Arial, sans-serif" font-size="12">
35
+ Central Discovery
36
+ </text>
37
+ <text x="500" y="470" text-anchor="middle" fill="#fecaca"
38
+ font-family="Arial, sans-serif" font-size="12">
39
+ &amp; Coordination
40
+ </text>
41
+
42
+ <!-- NATS/AMQP Broker -->
43
+ <rect x="425" y="520" width="150" height="80"
44
+ fill="#92400e" stroke="#f59e0b" stroke-width="3" rx="10"/>
45
+ <text x="500" y="550" text-anchor="middle" fill="#fef3c7"
46
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
47
+ Message Broker
48
+ </text>
49
+ <text x="500" y="570" text-anchor="middle" fill="#fde68a"
50
+ font-family="Arial, sans-serif" font-size="12">
51
+ NATS/AMQP
52
+ </text>
53
+ <text x="500" y="590" text-anchor="middle" fill="#fde68a"
54
+ font-family="Arial, sans-serif" font-size="12">
55
+ Cross-LAN Bridge
56
+ </text>
57
+
58
+ <!-- Agents in LAN 1 -->
59
+ <circle cx="150" cy="180" r="30" fill="#1a365d" stroke="#3182ce" stroke-width="2"/>
60
+ <text x="150" y="185" text-anchor="middle" fill="#bee3f8"
61
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
62
+ Agent A
63
+ </text>
64
+
65
+ <circle cx="280" cy="150" r="30" fill="#1a365d" stroke="#3182ce" stroke-width="2"/>
66
+ <text x="280" y="155" text-anchor="middle" fill="#bee3f8"
67
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
68
+ Agent B
69
+ </text>
70
+
71
+ <circle cx="350" cy="220" r="30" fill="#1a365d" stroke="#3182ce" stroke-width="2"/>
72
+ <text x="350" y="225" text-anchor="middle" fill="#bee3f8"
73
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
74
+ Agent C
75
+ </text>
76
+
77
+ <!-- Agents in LAN 2 -->
78
+ <circle cx="650" cy="180" r="30" fill="#2d3748" stroke="#4a5568" stroke-width="2"/>
79
+ <text x="650" y="185" text-anchor="middle" fill="#e2e8f0"
80
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
81
+ Agent X
82
+ </text>
83
+
84
+ <circle cx="780" cy="150" r="30" fill="#2d3748" stroke="#4a5568" stroke-width="2"/>
85
+ <text x="780" y="155" text-anchor="middle" fill="#e2e8f0"
86
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
87
+ Agent Y
88
+ </text>
89
+
90
+ <circle cx="850" cy="220" r="30" fill="#2d3748" stroke="#4a5568" stroke-width="2"/>
91
+ <text x="850" y="225" text-anchor="middle" fill="#e2e8f0"
92
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
93
+ Agent Z
94
+ </text>
95
+
96
+ <!-- Lanet P2P Connections within LANs (green) -->
97
+ <defs>
98
+ <marker id="greenarrow" markerWidth="8" markerHeight="6"
99
+ refX="7" refY="3" orient="auto">
100
+ <polygon points="0 0, 8 3, 0 6" fill="#10b981"/>
101
+ </marker>
102
+ <marker id="yellowarrow" markerWidth="8" markerHeight="6"
103
+ refX="7" refY="3" orient="auto">
104
+ <polygon points="0 0, 8 3, 0 6" fill="#f59e0b"/>
105
+ </marker>
106
+ <marker id="redarrow" markerWidth="8" markerHeight="6"
107
+ refX="7" refY="3" orient="auto">
108
+ <polygon points="0 0, 8 3, 0 6" fill="#dc2626"/>
109
+ </marker>
110
+ </defs>
111
+
112
+ <!-- P2P connections in LAN 1 -->
113
+ <line x1="180" y1="180" x2="250" y2="150"
114
+ stroke="#10b981" stroke-width="3" stroke-dasharray="5,3"
115
+ marker-end="url(#greenarrow)"/>
116
+ <line x1="250" y1="170" x2="180" y2="180"
117
+ stroke="#10b981" stroke-width="2" stroke-dasharray="5,3"
118
+ marker-end="url(#greenarrow)"/>
119
+ <line x1="310" y1="150" x2="340" y2="190"
120
+ stroke="#10b981" stroke-width="3" stroke-dasharray="5,3"
121
+ marker-end="url(#greenarrow)"/>
122
+
123
+ <!-- P2P connections in LAN 2 -->
124
+ <line x1="680" y1="180" x2="750" y2="150"
125
+ stroke="#10b981" stroke-width="3" stroke-dasharray="5,3"
126
+ marker-end="url(#greenarrow)"/>
127
+ <line x1="750" y1="170" x2="680" y2="180"
128
+ stroke="#10b981" stroke-width="2" stroke-dasharray="5,3"
129
+ marker-end="url(#greenarrow)"/>
130
+ <line x1="810" y1="150" x2="840" y2="190"
131
+ stroke="#10b981" stroke-width="3" stroke-dasharray="5,3"
132
+ marker-end="url(#greenarrow)"/>
133
+
134
+ <!-- Cross-LAN broker connections (yellow) -->
135
+ <line x1="350" y1="250" x2="450" y2="520"
136
+ stroke="#f59e0b" stroke-width="2"
137
+ marker-end="url(#yellowarrow)"/>
138
+ <line x1="650" y1="250" x2="550" y2="520"
139
+ stroke="#f59e0b" stroke-width="2"
140
+ marker-end="url(#yellowarrow)"/>
141
+
142
+ <!-- Registry connections (red) -->
143
+ <line x1="280" y1="280" x2="450" y2="400"
144
+ stroke="#dc2626" stroke-width="2"
145
+ marker-end="url(#redarrow)"/>
146
+ <line x1="750" y1="280" x2="550" y2="400"
147
+ stroke="#dc2626" stroke-width="2"
148
+ marker-end="url(#redarrow)"/>
149
+
150
+ <!-- Legend -->
151
+ <rect x="50" y="620" width="900" height="60"
152
+ fill="#1a202c" stroke="#2d3748" stroke-width="1" rx="5"/>
153
+ <text x="70" y="645" fill="#f7fafc"
154
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
155
+ Connection Types:
156
+ </text>
157
+
158
+ <line x1="200" y1="650" x2="250" y2="650"
159
+ stroke="#10b981" stroke-width="3" stroke-dasharray="5,3"
160
+ marker-end="url(#greenarrow)"/>
161
+ <text x="260" y="655" fill="#10b981"
162
+ font-family="Arial, sans-serif" font-size="12">
163
+ Lanet P2P (Same LAN)
164
+ </text>
165
+
166
+ <line x1="420" y1="650" x2="470" y2="650"
167
+ stroke="#f59e0b" stroke-width="2"
168
+ marker-end="url(#yellowarrow)"/>
169
+ <text x="480" y="655" fill="#f59e0b"
170
+ font-family="Arial, sans-serif" font-size="12">
171
+ Broker (Cross-LAN)
172
+ </text>
173
+
174
+ <line x1="620" y1="650" x2="670" y2="650"
175
+ stroke="#dc2626" stroke-width="2"
176
+ marker-end="url(#redarrow)"/>
177
+ <text x="680" y="655" fill="#dc2626"
178
+ font-family="Arial, sans-serif" font-size="12">
179
+ Registry (Discovery)
180
+ </text>
181
+ </svg>
@@ -0,0 +1,165 @@
1
+ <svg width="900" height="600" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Background transparent -->
3
+
4
+ <!-- Title -->
5
+ <text x="450" y="30" text-anchor="middle" fill="#f7fafc"
6
+ font-family="Arial, sans-serif" font-size="20" font-weight="bold">
7
+ Smart Transport Routing Strategy
8
+ </text>
9
+
10
+ <!-- Central SmartMessage Router -->
11
+ <rect x="375" y="250" width="150" height="100"
12
+ fill="#2d3748" stroke="#4299e1" stroke-width="3" rx="10"/>
13
+ <text x="450" y="280" text-anchor="middle" fill="#bee3f8"
14
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
15
+ SmartMessage
16
+ </text>
17
+ <text x="450" y="300" text-anchor="middle" fill="#90cdf4"
18
+ font-family="Arial, sans-serif" font-size="12">
19
+ Transport Router
20
+ </text>
21
+ <text x="450" y="320" text-anchor="middle" fill="#90cdf4"
22
+ font-family="Arial, sans-serif" font-size="12">
23
+ &amp; Message
24
+ </text>
25
+ <text x="450" y="335" text-anchor="middle" fill="#90cdf4"
26
+ font-family="Arial, sans-serif" font-size="12">
27
+ Abstraction
28
+ </text>
29
+
30
+ <!-- Agent99 Source -->
31
+ <rect x="50" y="50" width="120" height="60"
32
+ fill="#1a365d" stroke="#2c5282" stroke-width="2" rx="8"/>
33
+ <text x="110" y="85" text-anchor="middle" fill="#bee3f8"
34
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
35
+ Agent99
36
+ </text>
37
+ <text x="110" y="100" text-anchor="middle" fill="#90cdf4"
38
+ font-family="Arial, sans-serif" font-size="10">
39
+ Source Agent
40
+ </text>
41
+
42
+ <!-- Decision Logic -->
43
+ <polygon points="200,280 280,250 360,280 280,310"
44
+ fill="#553c9a" stroke="#7c3aed" stroke-width="2"/>
45
+ <text x="280" y="275" text-anchor="middle" fill="#e9d5ff"
46
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
47
+ Route
48
+ </text>
49
+ <text x="280" y="290" text-anchor="middle" fill="#e9d5ff"
50
+ font-family="Arial, sans-serif" font-size="11" font-weight="bold">
51
+ Decision
52
+ </text>
53
+
54
+ <!-- Transport Options -->
55
+
56
+ <!-- Lanet P2P (Same LAN) -->
57
+ <rect x="600" y="100" width="200" height="80"
58
+ fill="#065f46" stroke="#10b981" stroke-width="2" rx="8"/>
59
+ <text x="700" y="125" text-anchor="middle" fill="#d1fae5"
60
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
61
+ Lanet Transport
62
+ </text>
63
+ <text x="700" y="145" text-anchor="middle" fill="#a7f3d0"
64
+ font-family="Arial, sans-serif" font-size="12">
65
+ Direct P2P LAN
66
+ </text>
67
+ <text x="700" y="160" text-anchor="middle" fill="#a7f3d0"
68
+ font-family="Arial, sans-serif" font-size="10">
69
+ Encrypted, Low Latency
70
+ </text>
71
+ <text x="700" y="175" text-anchor="middle" fill="#6ee7b7"
72
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
73
+ Same Network Segment
74
+ </text>
75
+
76
+ <!-- NATS (WAN/Internet) -->
77
+ <rect x="600" y="260" width="200" height="80"
78
+ fill="#92400e" stroke="#f59e0b" stroke-width="2" rx="8"/>
79
+ <text x="700" y="285" text-anchor="middle" fill="#fef3c7"
80
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
81
+ NATS Transport
82
+ </text>
83
+ <text x="700" y="305" text-anchor="middle" fill="#fde68a"
84
+ font-family="Arial, sans-serif" font-size="12">
85
+ Internet/WAN
86
+ </text>
87
+ <text x="700" y="320" text-anchor="middle" fill="#fde68a"
88
+ font-family="Arial, sans-serif" font-size="10">
89
+ High Performance Broker
90
+ </text>
91
+ <text x="700" y="335" text-anchor="middle" fill="#fcd34d"
92
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
93
+ Cross-Network
94
+ </text>
95
+
96
+ <!-- AMQP (Enterprise) -->
97
+ <rect x="600" y="420" width="200" height="80"
98
+ fill="#7c2d12" stroke="#dc2626" stroke-width="2" rx="8"/>
99
+ <text x="700" y="445" text-anchor="middle" fill="#fef2f2"
100
+ font-family="Arial, sans-serif" font-size="14" font-weight="bold">
101
+ AMQP Transport
102
+ </text>
103
+ <text x="700" y="465" text-anchor="middle" fill="#fecaca"
104
+ font-family="Arial, sans-serif" font-size="12">
105
+ Enterprise Grade
106
+ </text>
107
+ <text x="700" y="480" text-anchor="middle" fill="#fecaca"
108
+ font-family="Arial, sans-serif" font-size="10">
109
+ Guaranteed Delivery
110
+ </text>
111
+ <text x="700" y="495" text-anchor="middle" fill="#f87171"
112
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
113
+ Critical Messages
114
+ </text>
115
+
116
+ <!-- Decision Labels -->
117
+ <text x="480" y="130" text-anchor="middle" fill="#a7f3d0"
118
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
119
+ same_lan?()
120
+ </text>
121
+ <text x="480" y="280" text-anchor="middle" fill="#fcd34d"
122
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
123
+ cross_network?()
124
+ </text>
125
+ <text x="480" y="430" text-anchor="middle" fill="#f87171"
126
+ font-family="Arial, sans-serif" font-size="10" font-weight="bold">
127
+ reliable_required?()
128
+ </text>
129
+
130
+ <!-- Arrows -->
131
+ <defs>
132
+ <marker id="arrowhead" markerWidth="10" markerHeight="7"
133
+ refX="9" refY="3.5" orient="auto">
134
+ <polygon points="0 0, 10 3.5, 0 7" fill="#cbd5e0"/>
135
+ </marker>
136
+ <marker id="greenarrow" markerWidth="10" markerHeight="7"
137
+ refX="9" refY="3.5" orient="auto">
138
+ <polygon points="0 0, 10 3.5, 0 7" fill="#10b981"/>
139
+ </marker>
140
+ <marker id="yellowarrow" markerWidth="10" markerHeight="7"
141
+ refX="9" refY="3.5" orient="auto">
142
+ <polygon points="0 0, 10 3.5, 0 7" fill="#f59e0b"/>
143
+ </marker>
144
+ <marker id="redarrow" markerWidth="10" markerHeight="7"
145
+ refX="9" refY="3.5" orient="auto">
146
+ <polygon points="0 0, 10 3.5, 0 7" fill="#dc2626"/>
147
+ </marker>
148
+ </defs>
149
+
150
+ <!-- Flow from Agent99 to Decision -->
151
+ <line x1="170" y1="80" x2="240" y2="260"
152
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrowhead)"/>
153
+
154
+ <!-- Flow from Decision to SmartMessage -->
155
+ <line x1="330" y1="280" x2="375" y2="300"
156
+ stroke="#4299e1" stroke-width="2" marker-end="url(#arrowhead)"/>
157
+
158
+ <!-- Flow to transports -->
159
+ <line x1="525" y1="280" x2="580" y2="140"
160
+ stroke="#10b981" stroke-width="3" marker-end="url(#greenarrow)"/>
161
+ <line x1="525" y1="300" x2="580" y2="300"
162
+ stroke="#f59e0b" stroke-width="3" marker-end="url(#yellowarrow)"/>
163
+ <line x1="525" y1="320" x2="580" y2="460"
164
+ stroke="#dc2626" stroke-width="3" marker-end="url(#redarrow)"/>
165
+ </svg>
@@ -0,0 +1,77 @@
1
+ <svg width="800" height="400" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Background transparent -->
3
+
4
+ <!-- Agent99 Layer -->
5
+ <rect x="50" y="50" width="700" height="80"
6
+ fill="#2d3748" stroke="#4a5568" stroke-width="2" rx="8"/>
7
+ <text x="400" y="85" text-anchor="middle" fill="#e2e8f0"
8
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
9
+ Agent99 (Business Logic Layer)
10
+ </text>
11
+ <text x="400" y="105" text-anchor="middle" fill="#cbd5e0"
12
+ font-family="Arial, sans-serif" font-size="14">
13
+ Agent capabilities, discovery, lifecycle, request/response handling
14
+ </text>
15
+
16
+ <!-- SmartMessage Layer -->
17
+ <rect x="50" y="150" width="700" height="80"
18
+ fill="#1a365d" stroke="#2c5282" stroke-width="2" rx="8"/>
19
+ <text x="400" y="185" text-anchor="middle" fill="#bee3f8"
20
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
21
+ SmartMessage (Message Abstraction Layer)
22
+ </text>
23
+ <text x="400" y="205" text-anchor="middle" fill="#90cdf4"
24
+ font-family="Arial, sans-serif" font-size="14">
25
+ Unified pub/sub API, entity addressing, serialization, transport selection
26
+ </text>
27
+
28
+ <!-- Transport Layer -->
29
+ <rect x="50" y="250" width="700" height="100"
30
+ fill="#1a202c" stroke="#2d3748" stroke-width="2" rx="8"/>
31
+ <text x="400" y="285" text-anchor="middle" fill="#f7fafc"
32
+ font-family="Arial, sans-serif" font-size="18" font-weight="bold">
33
+ Transport Layer (Multiple Options)
34
+ </text>
35
+
36
+ <!-- Transport Options -->
37
+ <rect x="80" y="300" width="180" height="35"
38
+ fill="#2f855a" stroke="#48bb78" stroke-width="1" rx="4"/>
39
+ <text x="170" y="322" text-anchor="middle" fill="#f0fff4"
40
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
41
+ Lanet (P2P LAN)
42
+ </text>
43
+
44
+ <rect x="310" y="300" width="180" height="35"
45
+ fill="#d69e2e" stroke="#ed8936" stroke-width="1" rx="4"/>
46
+ <text x="400" y="322" text-anchor="middle" fill="#fffbeb"
47
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
48
+ NATS (WAN/Internet)
49
+ </text>
50
+
51
+ <rect x="540" y="300" width="180" height="35"
52
+ fill="#7c2d12" stroke="#c05621" stroke-width="1" rx="4"/>
53
+ <text x="630" y="322" text-anchor="middle" fill="#fef7f0"
54
+ font-family="Arial, sans-serif" font-size="12" font-weight="bold">
55
+ AMQP (Enterprise)
56
+ </text>
57
+
58
+ <!-- Arrows showing data flow -->
59
+ <defs>
60
+ <marker id="arrowhead" markerWidth="10" markerHeight="7"
61
+ refX="9" refY="3.5" orient="auto">
62
+ <polygon points="0 0, 10 3.5, 0 7" fill="#cbd5e0"/>
63
+ </marker>
64
+ </defs>
65
+
66
+ <!-- Bidirectional arrows -->
67
+ <line x1="400" y1="130" x2="400" y2="145"
68
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrowhead)"/>
69
+ <line x1="400" y1="230" x2="400" y2="245"
70
+ stroke="#cbd5e0" stroke-width="2" marker-end="url(#arrowhead)"/>
71
+
72
+ <!-- Return arrows -->
73
+ <line x1="410" y1="145" x2="410" y2="130"
74
+ stroke="#a0aec0" stroke-width="1" marker-end="url(#arrowhead)"/>
75
+ <line x1="410" y1="245" x2="410" y2="230"
76
+ stroke="#a0aec0" stroke-width="1" marker-end="url(#arrowhead)"/>
77
+ </svg>