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
data/docs/AI/htm.rb ADDED
@@ -0,0 +1,141 @@
1
+ # File: examples/AI/htm.rb
2
+
3
+ require 'sqlite3'
4
+ require 'securerandom'
5
+ require 'time'
6
+
7
+ class HTMDemo
8
+ STATES = %w[STM MTM LTM PM].freeze
9
+
10
+ def initialize(db_name: 'htm_demo.db')
11
+ @db = SQLite3::Database.new(db_name)
12
+ @db.results_as_hash = true
13
+ create_tables
14
+ end
15
+
16
+ def create_tables
17
+ @db.execute <<-SQL
18
+ CREATE TABLE IF NOT EXISTS htm_cells (
19
+ id INTEGER PRIMARY KEY,
20
+ column_id INTEGER NOT NULL,
21
+ state TEXT NOT NULL,
22
+ last_accessed DATETIME NOT NULL,
23
+ hit_count INTEGER NOT NULL DEFAULT 0,
24
+ data TEXT NOT NULL
25
+ )
26
+ SQL
27
+
28
+ @db.execute <<-SQL
29
+ CREATE TABLE IF NOT EXISTS htm_columns (
30
+ id INTEGER PRIMARY KEY,
31
+ layer INTEGER NOT NULL
32
+ )
33
+ SQL
34
+ end
35
+
36
+ def create_column(layer:)
37
+ @db.execute('INSERT INTO htm_columns (layer) VALUES (?)', [layer])
38
+ @db.last_insert_row_id
39
+ end
40
+
41
+ def create_cell(column_id:, data:)
42
+ @db.execute(<<-SQL, {
43
+ INSERT INTO htm_cells (column_id, state, last_accessed, data)
44
+ VALUES (:column_id, :state, :last_accessed, :data)
45
+ SQL
46
+ column_id: column_id,
47
+ state: 'STM',
48
+ last_accessed: Time.now.strftime('%Y-%m-%dT%H:%M:%S%z'),
49
+ data: data
50
+ })
51
+ @db.last_insert_row_id
52
+ end
53
+
54
+ def update_cell(id:)
55
+ @db.execute(<<-SQL, {
56
+ UPDATE htm_cells
57
+ SET hit_count = hit_count + 1, last_accessed = :last_accessed
58
+ WHERE id = :id
59
+ SQL
60
+ id: id,
61
+ last_accessed: Time.now.strftime('%Y-%m-%dT%H:%M:%S%z')
62
+ })
63
+ end
64
+
65
+ def promote_cell(id:)
66
+ current_state = @db.get_first_value('SELECT state FROM htm_cells WHERE id = ?', [id])
67
+ current_index = STATES.index(current_state)
68
+
69
+ if current_index < STATES.length - 1
70
+ new_state = STATES[current_index + 1]
71
+ @db.execute('UPDATE htm_cells SET state = ? WHERE id = ?', [new_state, id])
72
+ end
73
+ end
74
+
75
+ def forget_cell(id:)
76
+ current_state = @db.get_first_value('SELECT state FROM htm_cells WHERE id = ?', [id])
77
+ current_index = STATES.index(current_state)
78
+
79
+ if current_index > 0
80
+ new_state = STATES[current_index - 1]
81
+ @db.execute('UPDATE htm_cells SET state = ? WHERE id = ?', [new_state, id])
82
+ end
83
+ end
84
+
85
+ def search_cells(query:, limit: 5)
86
+ @db.execute(<<-SQL, {
87
+ SELECT * FROM htm_cells
88
+ WHERE data LIKE :query
89
+ ORDER BY hit_count DESC
90
+ LIMIT :limit
91
+ SQL
92
+ query: "%#{query}%",
93
+ limit: limit
94
+ })
95
+ end
96
+
97
+ def display_stats
98
+ puts "HTM Statistics:"
99
+ puts "---------------"
100
+
101
+ STATES.each do |state|
102
+ count = @db.get_first_value('SELECT COUNT(*) FROM htm_cells WHERE state = ?', [state])
103
+ puts "#{state} cells: #{count}"
104
+ end
105
+
106
+ total_cells = @db.get_first_value('SELECT COUNT(*) FROM htm_cells')
107
+ total_columns = @db.get_first_value('SELECT COUNT(*) FROM htm_columns')
108
+ puts "Total cells: #{total_cells}"
109
+ puts "Total columns: #{total_columns}"
110
+ end
111
+ end
112
+
113
+ # Usage example
114
+ htm = HTMDemo.new
115
+
116
+ # Create some columns and cells
117
+ 5.times do |i|
118
+ column_id = htm.create_column(layer: i % 3 + 1)
119
+ 10.times do
120
+ htm.create_cell(column_id: column_id, data: SecureRandom.hex(10))
121
+ end
122
+ end
123
+
124
+ # Simulate some cell activations and promotions
125
+ 20.times do
126
+ cell_id = htm.search_cells(query: SecureRandom.hex(5), limit: 1).first&.fetch('id')
127
+ if cell_id
128
+ htm.update_cell(id: cell_id)
129
+ htm.promote_cell(id: cell_id) if rand < 0.3
130
+ end
131
+ end
132
+
133
+ # Simulate some cell forgetting
134
+ 10.times do
135
+ cell_id = htm.search_cells(query: SecureRandom.hex(5), limit: 1).first&.fetch('id')
136
+ htm.forget_cell(id: cell_id) if cell_id && rand < 0.2
137
+ end
138
+
139
+ # Display final statistics
140
+ htm.display_stats
141
+
Binary file