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.
- checksums.yaml +4 -4
- data/A2A_SPEC-dev.md +1829 -0
- data/CHANGELOG.md +38 -0
- data/COMMITS.md +196 -0
- data/DOCS.md +96 -0
- data/README.md +212 -84
- data/Rakefile +62 -0
- data/docs/AI/htm.md +215 -0
- data/docs/AI/htm.rb +141 -0
- data/docs/AI/htm_demo.db +0 -0
- data/docs/AI/notes_on_htm_implementation.md +1319 -0
- data/docs/AI/some_code.rb +692 -0
- data/docs/advanced-topics/a2a-protocol.md +13 -0
- data/docs/{advanced_features.md → advanced-topics/advanced-features.md} +9 -4
- data/docs/{control_actions.md → advanced-topics/control-actions.md} +2 -0
- data/docs/advanced-topics/model-context-protocol.md +4 -0
- data/docs/advanced-topics/multi-agent-processing.md +674 -0
- data/docs/agent-development/request-response-handling.md +512 -0
- data/docs/agent99_framework/central_registry.md +94 -0
- data/docs/agent99_framework/message_client.md +120 -0
- data/docs/agent99_framework/registry_client.md +119 -0
- data/docs/api-reference/agent99-base.md +463 -0
- data/docs/api-reference/message-clients.md +495 -0
- data/docs/{api_reference.md → api-reference/overview.md} +14 -4
- data/docs/api-reference/registry-client.md +470 -0
- data/docs/api-reference/schemas.md +518 -0
- data/docs/assets/css/custom.css +27 -0
- data/docs/assets/images/agent-lifecycle.svg +73 -0
- data/docs/assets/images/agent-registry-process.svg +86 -0
- data/docs/assets/images/agent-registry-processes.svg +114 -0
- data/docs/assets/images/agent-types-overview.svg +51 -0
- data/docs/assets/images/agent99-architecture.svg +85 -0
- data/docs/assets/images/agent99_logo.png +0 -0
- data/docs/assets/images/control-actions-state.svg +83 -0
- data/docs/assets/images/knowledge-graph.svg +77 -0
- data/docs/assets/images/message-processing-flow.svg +148 -0
- data/docs/assets/images/multi-agent-system.svg +66 -0
- data/docs/assets/images/proxy-pattern-sequence.svg +48 -0
- data/docs/assets/images/request-flow.svg +97 -0
- data/docs/assets/images/request-processing-lifecycle.svg +50 -0
- data/docs/assets/images/request-response-sequence.svg +39 -0
- data/docs/{agent_lifecycle.md → core-concepts/agent-lifecycle.md} +2 -0
- data/docs/core-concepts/agent-types.md +255 -0
- data/docs/{architecture.md → core-concepts/architecture.md} +5 -5
- data/docs/core-concepts/what-is-an-agent.md +293 -0
- data/docs/diagrams/message-flow-sequence.svg +198 -0
- data/docs/diagrams/p2p-network-topology.svg +181 -0
- data/docs/diagrams/smart-transport-routing.svg +165 -0
- data/docs/diagrams/three-layer-architecture.svg +77 -0
- data/docs/diagrams/transport-extension-api.svg +309 -0
- data/docs/diagrams/transport-extension-architecture.svg +234 -0
- data/docs/diagrams/transport-selection-flowchart.svg +264 -0
- data/docs/examples/advanced-examples.md +951 -0
- data/docs/examples/basic-examples.md +268 -0
- data/docs/{agent_discovery.md → framework-components/agent-discovery.md} +9 -5
- data/docs/{agent_registry_processes.md → framework-components/agent-registry.md} +9 -3
- data/docs/{message_processing.md → framework-components/message-processing.md} +3 -1
- data/docs/getting-started/basic-example.md +306 -0
- data/docs/getting-started/installation.md +160 -0
- data/docs/getting-started/overview.md +64 -0
- data/docs/getting-started/quick-start.md +179 -0
- data/docs/index.md +97 -0
- data/docs/operations/breaking-changes.md +26 -0
- data/examples/DEMO.md +148 -0
- data/examples/README.md +50 -0
- data/examples/agent_watcher.rb +5 -1
- data/examples/bad_agent.rb +32 -0
- data/examples/chief_agent.rb +17 -6
- data/examples/control.rb +16 -7
- data/examples/example_agent.rb +16 -3
- data/examples/maxwell_agent86.rb +15 -26
- data/examples/registry.rb +10 -9
- data/examples/run_demo.rb +433 -0
- data/lib/agent99/agent_discovery.rb +4 -0
- data/lib/agent99/agent_lifecycle.rb +34 -10
- data/lib/agent99/amqp_message_client.rb +2 -2
- data/lib/agent99/base.rb +6 -2
- data/lib/agent99/message_processing.rb +6 -10
- data/lib/agent99/registry_client.rb +15 -11
- data/lib/agent99/tcp_message_client.rb +183 -0
- data/lib/agent99/version.rb +1 -1
- data/lib/agent99.rb +1 -1
- data/mkdocs.yml +195 -0
- data/p2p_plan.md +533 -0
- data/p2p_roadmap.md +299 -0
- data/registry_plan.md +1818 -0
- metadata +93 -30
- data/docs/README.md +0 -57
- data/docs/diagrams/agent_registry_processes.dot +0 -42
- data/docs/diagrams/agent_registry_processes.png +0 -0
- data/docs/diagrams/high_level_architecture.dot +0 -26
- data/docs/diagrams/high_level_architecture.png +0 -0
- data/docs/diagrams/request_flow.dot +0 -42
- data/docs/diagrams/request_flow.png +0 -0
- /data/docs/{extending_the_framework.md → advanced-topics/extending-the-framework.md} +0 -0
- /data/docs/{custom_agent_implementation.md → agent-development/custom-agent-implementation.md} +0 -0
- /data/docs/{error_handling_and_logging.md → agent-development/error-handling-and-logging.md} +0 -0
- /data/docs/{schema_definition.md → agent-development/schema-definition.md} +0 -0
- /data/docs/{messaging_system.md → framework-components/messaging-system.md} +0 -0
- /data/docs/{configuration.md → operations/configuration.md} +0 -0
- /data/docs/{preformance_considerations.md → operations/performance-considerations.md} +0 -0
- /data/docs/{security.md → operations/security.md} +0 -0
- /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
|
+
& 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
|
+
& 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>
|