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
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
|
+
|
data/docs/AI/htm_demo.db
ADDED
Binary file
|