agent99 0.0.1
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 +7 -0
- data/.envrc +3 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE +21 -0
- data/README.md +99 -0
- data/Rakefile +8 -0
- data/docs/todo.md +66 -0
- data/examples/README.md +79 -0
- data/examples/hello_world.rb +97 -0
- data/examples/hello_world_client.rb +70 -0
- data/examples/hello_world_request.rb +12 -0
- data/examples/registry.rb +81 -0
- data/examples/start_agents.sh +20 -0
- data/lib/agent99/.irbrc +5 -0
- data/lib/agent99/agent_discovery.rb +35 -0
- data/lib/agent99/agent_lifecycle.rb +87 -0
- data/lib/agent99/amqp_message_client.rb +117 -0
- data/lib/agent99/base.rb +61 -0
- data/lib/agent99/control_actions.rb +56 -0
- data/lib/agent99/header_management.rb +24 -0
- data/lib/agent99/header_schema.rb +15 -0
- data/lib/agent99/message_processing.rb +155 -0
- data/lib/agent99/nats_message_client.rb +101 -0
- data/lib/agent99/registry_client.rb +73 -0
- data/lib/agent99/timestamp.rb +36 -0
- data/lib/agent99/version.rb +7 -0
- data/lib/agent99.rb +19 -0
- data/sig/ai_agent.rbs +4 -0
- metadata +205 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
# lib/agent99/timestamp.rb
|
2
|
+
|
3
|
+
class Agent99::Timestamp
|
4
|
+
attr_reader :ts, :utc
|
5
|
+
|
6
|
+
# regardless of the timezone of "now"
|
7
|
+
# timestamps (@ts) is maintained in UTC microseconds
|
8
|
+
# @ts is the Integer number of UTC-based microseconds since EPOCH
|
9
|
+
#
|
10
|
+
def initialize(now=Time.now)
|
11
|
+
if now.is_a? Time
|
12
|
+
@ts = self.class.utc2ts(now.utc)
|
13
|
+
@utc = now.utc
|
14
|
+
elsif now.is_a? Integer
|
15
|
+
@utc = self.class.ts2utc(now)
|
16
|
+
@ts = now
|
17
|
+
else
|
18
|
+
raise ArgumentError, "Expected ether a Time or Integer"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_i = @ts
|
23
|
+
def to_utc = @utc
|
24
|
+
|
25
|
+
class << self
|
26
|
+
def utc2ts(now=Time.now.utc)
|
27
|
+
# NOTE: This is faster that bit shifting by the smallest of measures
|
28
|
+
now.to_i * 1_000_000 + now.usec
|
29
|
+
end
|
30
|
+
|
31
|
+
def ts2utc(microseconds)
|
32
|
+
# NOTE: This is an order of magitude faster than not bit shifting
|
33
|
+
Time.at(microseconds >> 20, microseconds & 0xFFFFF).utc # Masking to get the last 20 bits
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/agent99.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# ./lib/agent99.rb
|
2
|
+
|
3
|
+
require 'debug_me'
|
4
|
+
include DebugMe
|
5
|
+
|
6
|
+
module Agent99; end # Establish a namespace
|
7
|
+
|
8
|
+
require_relative 'agent99/base'
|
9
|
+
|
10
|
+
module Agent99
|
11
|
+
module Type
|
12
|
+
SERVER = :server # Waits for and responds to requests
|
13
|
+
CLIENT = :client # Only makes requests
|
14
|
+
HYBRID = :hybrid # Can both make and respond to requests
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
# TODO: anything needed here?
|
19
|
+
end
|
data/sig/ai_agent.rbs
ADDED
metadata
ADDED
@@ -0,0 +1,205 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: agent99
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dewayne VanHoozer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-12-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ai_client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bunny
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nats-pure
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simple_json_schema_builder
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: amazing_print
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: debug_me
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: hashdiff
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mocha
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: tocer
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: "`agent99` is a Ruby gem designed to facilitate the creation and management
|
140
|
+
\nof smart agents, providing a straightforward interface for tasks such \nas natural
|
141
|
+
language processing, context handling, and conversing with various AI \nmodels.
|
142
|
+
It allows developers to smoothly integrate and utilize AI capabilities \nwithin
|
143
|
+
Ruby applications while ensuring flexibility and ease of customization.\n"
|
144
|
+
email:
|
145
|
+
- dvanhoozer@gmail.com
|
146
|
+
executables: []
|
147
|
+
extensions: []
|
148
|
+
extra_rdoc_files: []
|
149
|
+
files:
|
150
|
+
- ".envrc"
|
151
|
+
- CHANGELOG.md
|
152
|
+
- LICENSE
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- docs/todo.md
|
156
|
+
- examples/README.md
|
157
|
+
- examples/hello_world.rb
|
158
|
+
- examples/hello_world_client.rb
|
159
|
+
- examples/hello_world_request.rb
|
160
|
+
- examples/registry.rb
|
161
|
+
- examples/start_agents.sh
|
162
|
+
- lib/agent99.rb
|
163
|
+
- lib/agent99/.irbrc
|
164
|
+
- lib/agent99/agent_discovery.rb
|
165
|
+
- lib/agent99/agent_lifecycle.rb
|
166
|
+
- lib/agent99/amqp_message_client.rb
|
167
|
+
- lib/agent99/base.rb
|
168
|
+
- lib/agent99/control_actions.rb
|
169
|
+
- lib/agent99/header_management.rb
|
170
|
+
- lib/agent99/header_schema.rb
|
171
|
+
- lib/agent99/message_processing.rb
|
172
|
+
- lib/agent99/nats_message_client.rb
|
173
|
+
- lib/agent99/registry_client.rb
|
174
|
+
- lib/agent99/timestamp.rb
|
175
|
+
- lib/agent99/version.rb
|
176
|
+
- sig/ai_agent.rbs
|
177
|
+
homepage: https://github.com/MadBomber/agent99
|
178
|
+
licenses:
|
179
|
+
- MIT
|
180
|
+
metadata:
|
181
|
+
allowed_push_host: https://rubygems.org
|
182
|
+
homepage_uri: https://github.com/MadBomber/agent99
|
183
|
+
source_code_uri: https://github.com/MadBomber/agent99
|
184
|
+
changelog_uri: https://github.com/MadBomber/agent99/blob/main/CHANGELOG.md
|
185
|
+
post_install_message:
|
186
|
+
rdoc_options: []
|
187
|
+
require_paths:
|
188
|
+
- lib
|
189
|
+
- examples
|
190
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 3.3.0
|
195
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
requirements: []
|
201
|
+
rubygems_version: 3.5.23
|
202
|
+
signing_key:
|
203
|
+
specification_version: 4
|
204
|
+
summary: An intelligent agent framework for Ruby
|
205
|
+
test_files: []
|