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,86 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 500" style="background: transparent;">
2
+ <defs>
3
+ <marker id="arrow-reg" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
4
+ <path d="M0,0 L10,5 L0,10" fill="none" stroke="#66b3ff" stroke-width="1.5"/>
5
+ </marker>
6
+ </defs>
7
+
8
+ <!-- Title -->
9
+ <text x="450" y="30" text-anchor="middle" font-family="monospace" font-size="18" fill="#e0e0e0" font-weight="bold">Central Registry Operations</text>
10
+
11
+ <!-- Registration Flow -->
12
+ <g id="registration">
13
+ <text x="150" y="70" text-anchor="middle" font-family="monospace" font-size="14" fill="#66ff99" font-weight="bold">1. Registration</text>
14
+
15
+ <rect x="50" y="90" width="100" height="40" rx="5" fill="#2a2a3e" stroke="#66ff99" stroke-width="2"/>
16
+ <text x="100" y="115" text-anchor="middle" font-family="monospace" font-size="12" fill="#e0e0e0">Agent</text>
17
+
18
+ <rect x="150" y="90" width="100" height="40" rx="5" fill="#2a2a3e" stroke="#9966ff" stroke-width="2"/>
19
+ <text x="200" y="115" text-anchor="middle" font-family="monospace" font-size="12" fill="#e0e0e0">Registry</text>
20
+
21
+ <path d="M 100 130 L 100 160" stroke="#444" stroke-width="1" stroke-dasharray="3,2"/>
22
+ <path d="M 200 130 L 200 160" stroke="#444" stroke-width="1" stroke-dasharray="3,2"/>
23
+
24
+ <path d="M 100 170 L 190 170" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg)"/>
25
+ <text x="145" y="165" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ffcc">POST /register</text>
26
+ <text x="145" y="185" text-anchor="middle" font-family="monospace" font-size="8" fill="#66ff99">{name, capabilities}</text>
27
+
28
+ <path d="M 200 210 L 110 210" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-reg)"/>
29
+ <text x="155" y="205" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ccff">agent_id</text>
30
+ </g>
31
+
32
+ <!-- Discovery Flow -->
33
+ <g id="discovery" transform="translate(300, 0)">
34
+ <text x="150" y="70" text-anchor="middle" font-family="monospace" font-size="14" fill="#66b3ff" font-weight="bold">2. Discovery</text>
35
+
36
+ <rect x="50" y="90" width="100" height="40" rx="5" fill="#2a2a3e" stroke="#66b3ff" stroke-width="2"/>
37
+ <text x="100" y="115" text-anchor="middle" font-family="monospace" font-size="12" fill="#e0e0e0">Client</text>
38
+
39
+ <rect x="150" y="90" width="100" height="40" rx="5" fill="#2a2a3e" stroke="#9966ff" stroke-width="2"/>
40
+ <text x="200" y="115" text-anchor="middle" font-family="monospace" font-size="12" fill="#e0e0e0">Registry</text>
41
+
42
+ <path d="M 100 130 L 100 160" stroke="#444" stroke-width="1" stroke-dasharray="3,2"/>
43
+ <path d="M 200 130 L 200 160" stroke="#444" stroke-width="1" stroke-dasharray="3,2"/>
44
+
45
+ <path d="M 100 170 L 190 170" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-reg)"/>
46
+ <text x="145" y="165" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ccff">GET /discover</text>
47
+ <text x="145" y="185" text-anchor="middle" font-family="monospace" font-size="8" fill="#66b3ff">?capabilities=weather</text>
48
+
49
+ <path d="M 200 210 L 110 210" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg)"/>
50
+ <text x="155" y="205" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ffcc">[agents]</text>
51
+ </g>
52
+
53
+ <!-- Withdrawal Flow -->
54
+ <g id="withdrawal" transform="translate(600, 0)">
55
+ <text x="150" y="70" text-anchor="middle" font-family="monospace" font-size="14" fill="#ff9966" font-weight="bold">3. Withdrawal</text>
56
+
57
+ <rect x="50" y="90" width="100" height="40" rx="5" fill="#2a2a3e" stroke="#ff9966" stroke-width="2"/>
58
+ <text x="100" y="115" text-anchor="middle" font-family="monospace" font-size="12" fill="#e0e0e0">Agent</text>
59
+
60
+ <rect x="150" y="90" width="100" height="40" rx="5" fill="#2a2a3e" stroke="#9966ff" stroke-width="2"/>
61
+ <text x="200" y="115" text-anchor="middle" font-family="monospace" font-size="12" fill="#e0e0e0">Registry</text>
62
+
63
+ <path d="M 100 130 L 100 160" stroke="#444" stroke-width="1" stroke-dasharray="3,2"/>
64
+ <path d="M 200 130 L 200 160" stroke="#444" stroke-width="1" stroke-dasharray="3,2"/>
65
+
66
+ <path d="M 100 170 L 190 170" stroke="#ff9966" stroke-width="2" marker-end="url(#arrow-reg)"/>
67
+ <text x="145" y="165" text-anchor="middle" font-family="monospace" font-size="9" fill="#ffcc99">DELETE /withdraw</text>
68
+ <text x="145" y="185" text-anchor="middle" font-family="monospace" font-size="8" fill="#ff9966">/{agent_id}</text>
69
+
70
+ <path d="M 200 210 L 110 210" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg)"/>
71
+ <text x="155" y="205" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ffcc">success</text>
72
+ </g>
73
+
74
+ <!-- Data Store -->
75
+ <rect x="300" y="320" width="300" height="120" rx="10" fill="#1a1a2e" stroke="#9966ff" stroke-width="3"/>
76
+ <text x="450" y="350" text-anchor="middle" font-family="monospace" font-size="16" fill="#cc99ff" font-weight="bold">Registry Data Store</text>
77
+
78
+ <rect x="330" y="370" width="240" height="50" rx="5" fill="#2a2a3e" stroke="#666" stroke-width="1"/>
79
+ <text x="450" y="390" text-anchor="middle" font-family="monospace" font-size="11" fill="#999">agent_id → {name, capabilities,</text>
80
+ <text x="450" y="408" text-anchor="middle" font-family="monospace" font-size="11" fill="#999">timestamp, status, metadata}</text>
81
+
82
+ <!-- Connections to data store -->
83
+ <path d="M 200 240 L 400 320" stroke="#9966ff" stroke-width="1" stroke-dasharray="3,2" opacity="0.5"/>
84
+ <path d="M 500 240 L 450 320" stroke="#9966ff" stroke-width="1" stroke-dasharray="3,2" opacity="0.5"/>
85
+ <path d="M 800 240 L 500 320" stroke="#9966ff" stroke-width="1" stroke-dasharray="3,2" opacity="0.5"/>
86
+ </svg>
@@ -0,0 +1,114 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 700" style="background: transparent;">
2
+ <defs>
3
+ <marker id="arrow-reg-proc" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
4
+ <path d="M0,0 L10,5 L0,10 L5,5 z" fill="#66b3ff"/>
5
+ </marker>
6
+ <linearGradient id="grad-reg" x1="0%" y1="0%" x2="100%" y2="100%">
7
+ <stop offset="0%" style="stop-color:#2a2a3e;stop-opacity:1" />
8
+ <stop offset="100%" style="stop-color:#1a1a2e;stop-opacity:1" />
9
+ </linearGradient>
10
+ <filter id="shadow">
11
+ <feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
12
+ <feOffset dx="1" dy="1" result="offsetblur"/>
13
+ <feComponentTransfer>
14
+ <feFuncA type="linear" slope="0.3"/>
15
+ </feComponentTransfer>
16
+ <feMerge>
17
+ <feMergeNode/>
18
+ <feMergeNode in="SourceGraphic"/>
19
+ </feMerge>
20
+ </filter>
21
+ </defs>
22
+
23
+ <!-- Title -->
24
+ <text x="500" y="30" text-anchor="middle" font-family="monospace" font-size="18" fill="#e0e0e0" font-weight="bold">Agent Registry Processes</text>
25
+
26
+ <!-- Main Components -->
27
+ <rect x="50" y="80" width="120" height="60" rx="8" fill="url(#grad-reg)" stroke="#66b3ff" stroke-width="2" filter="url(#shadow)"/>
28
+ <text x="110" y="115" text-anchor="middle" font-family="monospace" font-size="14" fill="#99ccff" font-weight="bold">MyAgent</text>
29
+
30
+ <rect x="300" y="80" width="140" height="60" rx="8" fill="url(#grad-reg)" stroke="#9966ff" stroke-width="2" filter="url(#shadow)"/>
31
+ <text x="370" y="115" text-anchor="middle" font-family="monospace" font-size="14" fill="#cc99ff" font-weight="bold">RegistryClient</text>
32
+
33
+ <rect x="600" y="80" width="160" height="80" rx="8" fill="url(#grad-reg)" stroke="#ff9966" stroke-width="2" filter="url(#shadow)"/>
34
+ <text x="680" y="110" text-anchor="middle" font-family="monospace" font-size="14" fill="#ffcc99" font-weight="bold">Central Registry</text>
35
+ <text x="680" y="130" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff9966">(Sinatra Server)</text>
36
+
37
+ <!-- Registration Process -->
38
+ <g id="registration-process">
39
+ <rect x="50" y="200" width="900" height="140" rx="10" fill="#2a2a3e" stroke="#66ff99" stroke-width="2" stroke-dasharray="5,3" opacity="0.1"/>
40
+ <text x="70" y="220" font-family="monospace" font-size="14" fill="#66ff99" font-weight="bold">Registration Process</text>
41
+
42
+ <!-- Step 1 -->
43
+ <path d="M 170 250 L 290 250" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
44
+ <text x="230" y="240" text-anchor="middle" font-family="monospace" font-size="10" fill="#66ff99">1. initialize</text>
45
+
46
+ <!-- Step 2 -->
47
+ <path d="M 440 250 L 590 250" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
48
+ <text x="515" y="240" text-anchor="middle" font-family="monospace" font-size="9" fill="#66ff99">2. POST /register</text>
49
+ <text x="515" y="255" text-anchor="middle" font-family="monospace" font-size="8" fill="#99ffcc">{name, capabilities}</text>
50
+
51
+ <!-- Step 3 -->
52
+ <path d="M 590 290 L 450 290" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
53
+ <text x="520" y="280" text-anchor="middle" font-family="monospace" font-size="9" fill="#66ff99">3. 201 Created</text>
54
+ <text x="520" y="305" text-anchor="middle" font-family="monospace" font-size="8" fill="#99ffcc">{uuid}</text>
55
+
56
+ <!-- Step 4 -->
57
+ <path d="M 290 290 L 180 290" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
58
+ <text x="235" y="280" text-anchor="middle" font-family="monospace" font-size="10" fill="#66ff99">4. Return uuid</text>
59
+ </g>
60
+
61
+ <!-- Discovery Process -->
62
+ <g id="discovery-process">
63
+ <rect x="50" y="370" width="900" height="140" rx="10" fill="#2a2a3e" stroke="#66b3ff" stroke-width="2" stroke-dasharray="5,3" opacity="0.1"/>
64
+ <text x="70" y="390" font-family="monospace" font-size="14" fill="#66b3ff" font-weight="bold">Discovery Process</text>
65
+
66
+ <!-- Step 5 -->
67
+ <path d="M 170 420 L 290 420" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
68
+ <text x="230" y="410" text-anchor="middle" font-family="monospace" font-size="9" fill="#66b3ff">5. discover(capability)</text>
69
+
70
+ <!-- Step 6 -->
71
+ <path d="M 440 420 L 590 420" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
72
+ <text x="515" y="405" text-anchor="middle" font-family="monospace" font-size="8" fill="#66b3ff">6. GET /discover</text>
73
+ <text x="515" y="420" text-anchor="middle" font-family="monospace" font-size="8" fill="#99ccff">?capability=...</text>
74
+
75
+ <!-- Step 7 -->
76
+ <path d="M 590 460 L 450 460" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
77
+ <text x="520" y="445" text-anchor="middle" font-family="monospace" font-size="8" fill="#66b3ff">7. 200 OK</text>
78
+ <text x="520" y="460" text-anchor="middle" font-family="monospace" font-size="8" fill="#99ccff">[matching agents]</text>
79
+
80
+ <!-- Step 8 -->
81
+ <path d="M 290 460 L 180 460" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
82
+ <text x="235" y="445" text-anchor="middle" font-family="monospace" font-size="8" fill="#66b3ff">8. Return matching</text>
83
+ <text x="235" y="460" text-anchor="middle" font-family="monospace" font-size="8" fill="#99ccff">agents</text>
84
+ </g>
85
+
86
+ <!-- Withdrawal Process -->
87
+ <g id="withdrawal-process">
88
+ <rect x="50" y="540" width="900" height="140" rx="10" fill="#2a2a3e" stroke="#ff99ff" stroke-width="2" stroke-dasharray="5,3" opacity="0.1"/>
89
+ <text x="70" y="560" font-family="monospace" font-size="14" fill="#ff99ff" font-weight="bold">Withdrawal Process</text>
90
+
91
+ <!-- Step 9 -->
92
+ <path d="M 170 590 L 290 590" stroke="#ff99ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
93
+ <text x="230" y="580" text-anchor="middle" font-family="monospace" font-size="9" fill="#ff99ff">9. withdraw(uuid)</text>
94
+
95
+ <!-- Step 10 -->
96
+ <path d="M 440 590 L 590 590" stroke="#ff99ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
97
+ <text x="515" y="580" text-anchor="middle" font-family="monospace" font-size="8" fill="#ff99ff">10. DELETE</text>
98
+ <text x="515" y="595" text-anchor="middle" font-family="monospace" font-size="8" fill="#ffccff">/withdraw/:uuid</text>
99
+
100
+ <!-- Step 11 -->
101
+ <path d="M 590 630 L 450 630" stroke="#ff99ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
102
+ <text x="520" y="620" text-anchor="middle" font-family="monospace" font-size="8" fill="#ff99ff">11. 204 No Content</text>
103
+
104
+ <!-- Step 12 -->
105
+ <path d="M 290 630 L 180 630" stroke="#ff99ff" stroke-width="2" marker-end="url(#arrow-reg-proc)"/>
106
+ <text x="235" y="620" text-anchor="middle" font-family="monospace" font-size="8" fill="#ff99ff">12. Confirm</text>
107
+ <text x="235" y="635" text-anchor="middle" font-family="monospace" font-size="8" fill="#ffccff">withdrawal</text>
108
+ </g>
109
+
110
+ <!-- Vertical connecting lines -->
111
+ <path d="M 110 140 L 110 540" stroke="#666" stroke-width="1" stroke-dasharray="3,2" opacity="0.5"/>
112
+ <path d="M 370 140 L 370 540" stroke="#666" stroke-width="1" stroke-dasharray="3,2" opacity="0.5"/>
113
+ <path d="M 680 160 L 680 540" stroke="#666" stroke-width="1" stroke-dasharray="3,2" opacity="0.5"/>
114
+ </svg>
@@ -0,0 +1,51 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 300" style="background: transparent;">
2
+ <defs>
3
+ <marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto" markerUnits="strokeWidth">
4
+ <path d="M0,0 L10,5 L0,10 L5,5 z" fill="#66b3ff"/>
5
+ </marker>
6
+ <filter id="shadow">
7
+ <feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
8
+ <feOffset dx="2" dy="2" result="offsetblur"/>
9
+ <feComponentTransfer>
10
+ <feFuncA type="linear" slope="0.3"/>
11
+ </feComponentTransfer>
12
+ <feMerge>
13
+ <feMergeNode/>
14
+ <feMergeNode in="SourceGraphic"/>
15
+ </feMerge>
16
+ </filter>
17
+ </defs>
18
+
19
+ <!-- Client Agent -->
20
+ <rect x="30" y="40" width="140" height="60" rx="8" fill="#2a2a3e" stroke="#66b3ff" stroke-width="2" filter="url(#shadow)"/>
21
+ <text x="100" y="75" text-anchor="middle" font-family="monospace" font-size="14" fill="#e0e0e0">Client Agent</text>
22
+
23
+ <!-- Server Agent -->
24
+ <rect x="330" y="40" width="140" height="60" rx="8" fill="#2a2a3e" stroke="#66b3ff" stroke-width="2" filter="url(#shadow)"/>
25
+ <text x="400" y="75" text-anchor="middle" font-family="monospace" font-size="14" fill="#e0e0e0">Server Agent</text>
26
+
27
+ <!-- Hybrid Agent -->
28
+ <rect x="180" y="180" width="140" height="60" rx="8" fill="#2a2a3e" stroke="#ff9966" stroke-width="2" filter="url(#shadow)"/>
29
+ <text x="250" y="215" text-anchor="middle" font-family="monospace" font-size="14" fill="#e0e0e0">Hybrid Agent</text>
30
+
31
+ <!-- Any Agent -->
32
+ <rect x="480" y="180" width="140" height="60" rx="8" fill="#2a2a3e" stroke="#ff9966" stroke-width="2" filter="url(#shadow)"/>
33
+ <text x="550" y="215" text-anchor="middle" font-family="monospace" font-size="14" fill="#e0e0e0">Any Agent</text>
34
+
35
+ <!-- Arrows with labels -->
36
+ <!-- Client to Server -->
37
+ <path d="M 170 70 L 330 70" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow)"/>
38
+ <text x="250" y="60" text-anchor="middle" font-family="monospace" font-size="11" fill="#99ccff">sends requests</text>
39
+
40
+ <!-- Server to Client -->
41
+ <path d="M 330 90 L 170 90" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow)"/>
42
+ <text x="250" y="105" text-anchor="middle" font-family="monospace" font-size="11" fill="#99ccff">sends responses</text>
43
+
44
+ <!-- Hybrid to Any -->
45
+ <path d="M 320 200 L 480 200" stroke="#ff9966" stroke-width="2" marker-end="url(#arrow)"/>
46
+ <text x="400" y="190" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc99">can send &amp; receive</text>
47
+
48
+ <!-- Any to Hybrid -->
49
+ <path d="M 480 220 L 320 220" stroke="#ff9966" stroke-width="2" marker-end="url(#arrow)"/>
50
+ <text x="400" y="235" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc99">can send &amp; receive</text>
51
+ </svg>
@@ -0,0 +1,85 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600" style="background: transparent;">
2
+ <defs>
3
+ <linearGradient id="grad-arch" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#2a2a3e;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#1a1a2e;stop-opacity:1" />
6
+ </linearGradient>
7
+ <filter id="glow">
8
+ <feGaussianBlur stdDeviation="3" result="coloredBlur"/>
9
+ <feMerge>
10
+ <feMergeNode in="coloredBlur"/>
11
+ <feMergeNode in="SourceGraphic"/>
12
+ </feMerge>
13
+ </filter>
14
+ <marker id="arrow-arch" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
15
+ <path d="M0,0 L10,5 L0,10 L5,5 z" fill="#66b3ff"/>
16
+ </marker>
17
+ </defs>
18
+
19
+ <!-- Title -->
20
+ <text x="450" y="30" text-anchor="middle" font-family="monospace" font-size="20" fill="#e0e0e0" font-weight="bold">Agent99 Framework Architecture</text>
21
+
22
+ <!-- Central Registry -->
23
+ <rect x="350" y="80" width="200" height="100" rx="10" fill="url(#grad-arch)" stroke="#9966ff" stroke-width="3" filter="url(#glow)"/>
24
+ <text x="450" y="110" text-anchor="middle" font-family="monospace" font-size="16" fill="#cc99ff" font-weight="bold">Central Registry</text>
25
+ <text x="450" y="135" text-anchor="middle" font-family="monospace" font-size="11" fill="#b388ff">• Agent Registration</text>
26
+ <text x="450" y="155" text-anchor="middle" font-family="monospace" font-size="11" fill="#b388ff">• Service Discovery</text>
27
+ <text x="450" y="175" text-anchor="middle" font-family="monospace" font-size="11" fill="#b388ff">• Capability Tracking</text>
28
+
29
+ <!-- Message Broker -->
30
+ <rect x="350" y="250" width="200" height="100" rx="10" fill="url(#grad-arch)" stroke="#ff9966" stroke-width="3" filter="url(#glow)"/>
31
+ <text x="450" y="280" text-anchor="middle" font-family="monospace" font-size="16" fill="#ffcc99" font-weight="bold">Message Broker</text>
32
+ <text x="450" y="305" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffb380">• AMQP/NATS</text>
33
+ <text x="450" y="325" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffb380">• Request Routing</text>
34
+ <text x="450" y="345" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffb380">• Response Delivery</text>
35
+
36
+ <!-- Server Agent -->
37
+ <rect x="50" y="420" width="150" height="120" rx="8" fill="#2a2a3e" stroke="#66ff99" stroke-width="2"/>
38
+ <text x="125" y="450" text-anchor="middle" font-family="monospace" font-size="14" fill="#99ffcc" font-weight="bold">Server Agent</text>
39
+ <text x="125" y="475" text-anchor="middle" font-family="monospace" font-size="10" fill="#66ff99">• Process Requests</text>
40
+ <text x="125" y="495" text-anchor="middle" font-family="monospace" font-size="10" fill="#66ff99">• Send Responses</text>
41
+ <text x="125" y="515" text-anchor="middle" font-family="monospace" font-size="10" fill="#66ff99">• Register Capabilities</text>
42
+
43
+ <!-- Client Agent -->
44
+ <rect x="250" y="420" width="150" height="120" rx="8" fill="#2a2a3e" stroke="#66b3ff" stroke-width="2"/>
45
+ <text x="325" y="450" text-anchor="middle" font-family="monospace" font-size="14" fill="#99ccff" font-weight="bold">Client Agent</text>
46
+ <text x="325" y="475" text-anchor="middle" font-family="monospace" font-size="10" fill="#66b3ff">• Send Requests</text>
47
+ <text x="325" y="495" text-anchor="middle" font-family="monospace" font-size="10" fill="#66b3ff">• Handle Responses</text>
48
+ <text x="325" y="515" text-anchor="middle" font-family="monospace" font-size="10" fill="#66b3ff">• Discover Services</text>
49
+
50
+ <!-- Hybrid Agent -->
51
+ <rect x="500" y="420" width="150" height="120" rx="8" fill="#2a2a3e" stroke="#ff66ff" stroke-width="2"/>
52
+ <text x="575" y="450" text-anchor="middle" font-family="monospace" font-size="14" fill="#ff99ff" font-weight="bold">Hybrid Agent</text>
53
+ <text x="575" y="475" text-anchor="middle" font-family="monospace" font-size="10" fill="#ff66ff">• Proxy Requests</text>
54
+ <text x="575" y="495" text-anchor="middle" font-family="monospace" font-size="10" fill="#ff66ff">• Cache Responses</text>
55
+ <text x="575" y="515" text-anchor="middle" font-family="monospace" font-size="10" fill="#ff66ff">• Load Balance</text>
56
+
57
+ <!-- External Service -->
58
+ <rect x="700" y="420" width="150" height="120" rx="8" fill="#2a2a3e" stroke="#ffcc66" stroke-width="2"/>
59
+ <text x="775" y="450" text-anchor="middle" font-family="monospace" font-size="14" fill="#ffdd99" font-weight="bold">External Service</text>
60
+ <text x="775" y="475" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffcc66">• REST APIs</text>
61
+ <text x="775" y="495" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffcc66">• Databases</text>
62
+ <text x="775" y="515" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffcc66">• Third-party APIs</text>
63
+
64
+ <!-- Connections -->
65
+ <!-- Registry connections -->
66
+ <path d="M 350 130 L 200 420" stroke="#9966ff" stroke-width="1.5" stroke-dasharray="3,2" opacity="0.7" marker-end="url(#arrow-arch)"/>
67
+ <path d="M 400 180 L 325 420" stroke="#9966ff" stroke-width="1.5" stroke-dasharray="3,2" opacity="0.7" marker-end="url(#arrow-arch)"/>
68
+ <path d="M 500 180 L 575 420" stroke="#9966ff" stroke-width="1.5" stroke-dasharray="3,2" opacity="0.7" marker-end="url(#arrow-arch)"/>
69
+
70
+ <!-- Broker connections -->
71
+ <path d="M 350 300 L 200 420" stroke="#ff9966" stroke-width="1.5" opacity="0.7" marker-end="url(#arrow-arch)"/>
72
+ <path d="M 400 350 L 325 420" stroke="#ff9966" stroke-width="1.5" opacity="0.7" marker-end="url(#arrow-arch)"/>
73
+ <path d="M 500 350 L 575 420" stroke="#ff9966" stroke-width="1.5" opacity="0.7" marker-end="url(#arrow-arch)"/>
74
+
75
+ <!-- Hybrid to External -->
76
+ <path d="M 650 480 L 700 480" stroke="#ffcc66" stroke-width="2" marker-end="url(#arrow-arch)"/>
77
+
78
+ <!-- Registry to Broker -->
79
+ <path d="M 450 180 L 450 250" stroke="#ccccff" stroke-width="2" stroke-dasharray="5,3" marker-end="url(#arrow-arch)"/>
80
+
81
+ <!-- Labels -->
82
+ <text x="280" y="250" font-family="monospace" font-size="9" fill="#9966ff">Register</text>
83
+ <text x="280" y="380" font-family="monospace" font-size="9" fill="#ff9966">Messaging</text>
84
+ <text x="675" y="475" font-family="monospace" font-size="9" fill="#ffcc66">API</text>
85
+ </svg>
Binary file
@@ -0,0 +1,83 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 500" style="background: transparent;">
2
+ <defs>
3
+ <marker id="arrow-ctrl" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
4
+ <path d="M0,0 L10,5 L0,10 L5,5 z" fill="#66b3ff"/>
5
+ </marker>
6
+ <filter id="glow">
7
+ <feGaussianBlur stdDeviation="2" result="coloredBlur"/>
8
+ <feMerge>
9
+ <feMergeNode in="coloredBlur"/>
10
+ <feMergeNode in="SourceGraphic"/>
11
+ </feMerge>
12
+ </filter>
13
+ </defs>
14
+
15
+ <!-- Title -->
16
+ <text x="400" y="30" text-anchor="middle" font-family="monospace" font-size="18" fill="#e0e0e0" font-weight="bold">Agent Control State Machine</text>
17
+
18
+ <!-- States -->
19
+ <!-- Running -->
20
+ <rect x="300" y="80" width="200" height="80" rx="10" fill="#2a2a3e" stroke="#66ff99" stroke-width="3" filter="url(#glow)"/>
21
+ <text x="400" y="110" text-anchor="middle" font-family="monospace" font-size="16" fill="#99ffcc" font-weight="bold">RUNNING</text>
22
+ <text x="400" y="135" text-anchor="middle" font-family="monospace" font-size="11" fill="#66ff99">• Processing messages</text>
23
+ <text x="400" y="150" text-anchor="middle" font-family="monospace" font-size="11" fill="#66ff99">• Active state</text>
24
+
25
+ <!-- Paused -->
26
+ <rect x="50" y="250" width="200" height="80" rx="10" fill="#2a2a3e" stroke="#ffcc66" stroke-width="3" filter="url(#glow)"/>
27
+ <text x="150" y="280" text-anchor="middle" font-family="monospace" font-size="16" fill="#ffdd99" font-weight="bold">PAUSED</text>
28
+ <text x="150" y="305" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc66">• Messages queued</text>
29
+ <text x="150" y="320" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc66">• Suspended state</text>
30
+
31
+ <!-- Config Update -->
32
+ <rect x="550" y="250" width="200" height="80" rx="10" fill="#2a2a3e" stroke="#ff99ff" stroke-width="3" filter="url(#glow)"/>
33
+ <text x="650" y="280" text-anchor="middle" font-family="monospace" font-size="16" fill="#ffccff" font-weight="bold">CONFIG UPDATE</text>
34
+ <text x="650" y="305" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff99ff">• Apply new settings</text>
35
+ <text x="650" y="320" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff99ff">• Transient state</text>
36
+
37
+ <!-- Shutdown -->
38
+ <rect x="300" y="400" width="200" height="80" rx="10" fill="#2a2a3e" stroke="#ff6666" stroke-width="3" filter="url(#glow)"/>
39
+ <text x="400" y="430" text-anchor="middle" font-family="monospace" font-size="16" fill="#ff9999" font-weight="bold">SHUTDOWN</text>
40
+ <text x="400" y="455" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff6666">• Cleanup resources</text>
41
+ <text x="400" y="470" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff6666">• Terminal state</text>
42
+
43
+ <!-- Transitions -->
44
+ <!-- Running to Paused -->
45
+ <path d="M 300 120 L 250 250" stroke="#ffcc66" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
46
+ <text x="240" y="180" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc66">pause()</text>
47
+
48
+ <!-- Paused to Running -->
49
+ <path d="M 250 290 L 300 160" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
50
+ <text x="280" y="230" text-anchor="middle" font-family="monospace" font-size="11" fill="#66ff99">resume()</text>
51
+
52
+ <!-- Running to Config -->
53
+ <path d="M 500 120 L 550 250" stroke="#ff99ff" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
54
+ <text x="540" y="180" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff99ff">update_config()</text>
55
+
56
+ <!-- Config to Running -->
57
+ <path d="M 550 290 L 500 160" stroke="#66ff99" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
58
+ <text x="520" y="230" text-anchor="middle" font-family="monospace" font-size="11" fill="#66ff99">apply()</text>
59
+
60
+ <!-- Running to Shutdown -->
61
+ <path d="M 400 160 L 400 400" stroke="#ff6666" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
62
+ <text x="430" y="280" font-family="monospace" font-size="11" fill="#ff6666">shutdown()</text>
63
+
64
+ <!-- Paused to Shutdown -->
65
+ <path d="M 150 330 L 300 400" stroke="#ff6666" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
66
+ <text x="210" y="370" font-family="monospace" font-size="11" fill="#ff6666">shutdown()</text>
67
+
68
+ <!-- Config to Shutdown -->
69
+ <path d="M 650 330 L 500 400" stroke="#ff6666" stroke-width="2" marker-end="url(#arrow-ctrl)"/>
70
+ <text x="590" y="370" font-family="monospace" font-size="11" fill="#ff6666">shutdown()</text>
71
+
72
+ <!-- Status check (self loop) -->
73
+ <path d="M 400 80 Q 400 40 400 80" stroke="#66b3ff" stroke-width="1.5" marker-end="url(#arrow-ctrl)" fill="none"/>
74
+ <text x="400" y="55" text-anchor="middle" font-family="monospace" font-size="10" fill="#99ccff">status()</text>
75
+
76
+ <!-- Legend -->
77
+ <rect x="620" y="60" width="150" height="100" rx="5" fill="#1a1a2e" stroke="#666" stroke-width="1" opacity="0.8"/>
78
+ <text x="695" y="80" text-anchor="middle" font-family="monospace" font-size="11" fill="#999" font-weight="bold">Control Actions</text>
79
+ <text x="630" y="100" font-family="monospace" font-size="9" fill="#ffcc66">• pause</text>
80
+ <text x="630" y="115" font-family="monospace" font-size="9" fill="#66ff99">• resume</text>
81
+ <text x="630" y="130" font-family="monospace" font-size="9" fill="#ff99ff">• update_config</text>
82
+ <text x="630" y="145" font-family="monospace" font-size="9" fill="#ff6666">• shutdown</text>
83
+ </svg>
@@ -0,0 +1,77 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 400" style="background: transparent;">
2
+ <defs>
3
+ <marker id="arrow-kg" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
4
+ <path d="M0,0 L10,5 L0,10 L5,5 z" fill="#66b3ff"/>
5
+ </marker>
6
+ <radialGradient id="node-grad" cx="50%" cy="50%" r="50%">
7
+ <stop offset="0%" style="stop-color:#3a3a5e;stop-opacity:1" />
8
+ <stop offset="100%" style="stop-color:#2a2a3e;stop-opacity:1" />
9
+ </radialGradient>
10
+ <filter id="glow">
11
+ <feGaussianBlur stdDeviation="2" result="coloredBlur"/>
12
+ <feMerge>
13
+ <feMergeNode in="coloredBlur"/>
14
+ <feMergeNode in="SourceGraphic"/>
15
+ </feMerge>
16
+ </filter>
17
+ </defs>
18
+
19
+ <!-- Title -->
20
+ <text x="300" y="30" text-anchor="middle" font-family="monospace" font-size="18" fill="#e0e0e0" font-weight="bold">Knowledge Graph Example</text>
21
+
22
+ <!-- Science Node -->
23
+ <circle cx="150" cy="120" r="40" fill="url(#node-grad)" stroke="#66ff99" stroke-width="3" filter="url(#glow)"/>
24
+ <text x="150" y="125" text-anchor="middle" font-family="monospace" font-size="12" fill="#99ffcc" font-weight="bold">Science</text>
25
+
26
+ <!-- Physics Node -->
27
+ <circle cx="350" cy="120" r="40" fill="url(#node-grad)" stroke="#66b3ff" stroke-width="3" filter="url(#glow)"/>
28
+ <text x="350" y="125" text-anchor="middle" font-family="monospace" font-size="12" fill="#99ccff" font-weight="bold">Physics</text>
29
+
30
+ <!-- Quantum Mechanics Node -->
31
+ <circle cx="500" cy="200" r="50" fill="url(#node-grad)" stroke="#ff9966" stroke-width="3" filter="url(#glow)"/>
32
+ <text x="500" y="195" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc99" font-weight="bold">Quantum</text>
33
+ <text x="500" y="210" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffcc99" font-weight="bold">Mechanics</text>
34
+
35
+ <!-- Mathematics Node -->
36
+ <circle cx="150" cy="280" r="40" fill="url(#node-grad)" stroke="#ff66ff" stroke-width="3" filter="url(#glow)"/>
37
+ <text x="150" y="285" text-anchor="middle" font-family="monospace" font-size="11" fill="#ff99ff" font-weight="bold">Mathematics</text>
38
+
39
+ <!-- Computer Science Node -->
40
+ <circle cx="350" cy="280" r="45" fill="url(#node-grad)" stroke="#ffcc66" stroke-width="3" filter="url(#glow)"/>
41
+ <text x="350" y="275" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffdd99" font-weight="bold">Computer</text>
42
+ <text x="350" y="290" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffdd99" font-weight="bold">Science</text>
43
+
44
+ <!-- Edges -->
45
+ <!-- Science -> Physics -->
46
+ <path d="M 190 120 L 310 120" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-kg)" filter="url(#glow)"/>
47
+ <text x="250" y="115" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ccff">contains</text>
48
+
49
+ <!-- Physics -> Quantum Mechanics -->
50
+ <path d="M 380 140 L 470 180" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-kg)" filter="url(#glow)"/>
51
+ <text x="430" y="155" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ccff">includes</text>
52
+
53
+ <!-- Science -> Mathematics -->
54
+ <path d="M 150 160 L 150 240" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-kg)" filter="url(#glow)"/>
55
+ <text x="170" y="200" font-family="monospace" font-size="9" fill="#99ccff">uses</text>
56
+
57
+ <!-- Science -> Computer Science -->
58
+ <path d="M 180 140 L 320 260" stroke="#66b3ff" stroke-width="2" marker-end="url(#arrow-kg)" filter="url(#glow)"/>
59
+ <text x="250" y="200" text-anchor="middle" font-family="monospace" font-size="9" fill="#99ccff">enabled by</text>
60
+
61
+ <!-- Mathematics -> Computer Science -->
62
+ <path d="M 190 280 L 305 280" stroke="#ff66ff" stroke-width="2" marker-end="url(#arrow-kg)" filter="url(#glow)"/>
63
+ <text x="247" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#ff99ff">foundations</text>
64
+
65
+ <!-- Legend -->
66
+ <rect x="50" y="340" width="200" height="50" rx="5" fill="#1a1a2e" stroke="#666" stroke-width="1" opacity="0.8"/>
67
+ <text x="150" y="360" text-anchor="middle" font-family="monospace" font-size="11" fill="#ccc" font-weight="bold">Ruby Graph Libraries</text>
68
+ <text x="60" y="375" font-family="monospace" font-size="9" fill="#99ffcc">• GraphViz (ruby-graphviz)</text>
69
+ <text x="60" y="385" font-family="monospace" font-size="9" fill="#99ffcc">• RGL (Ruby Graph Library)</text>
70
+
71
+ <!-- Example code snippet -->
72
+ <rect x="300" y="320" width="280" height="70" rx="5" fill="#1a1a2e" stroke="#666" stroke-width="1" opacity="0.8"/>
73
+ <text x="440" y="340" text-anchor="middle" font-family="monospace" font-size="10" fill="#ccc" font-weight="bold">Example Usage</text>
74
+ <text x="310" y="355" font-family="monospace" font-size="8" fill="#66ff99">graph.add_nodes("Science")</text>
75
+ <text x="310" y="365" font-family="monospace" font-size="8" fill="#66ff99">graph.add_nodes("Physics")</text>
76
+ <text x="310" y="375" font-family="monospace" font-size="8" fill="#66b3ff">graph.add_edges(node1, node2)</text>
77
+ </svg>