solid_agent 0.0.0 → 0.2.0

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/CHANGELOG.md +68 -0
  3. data/LICENSE +21 -0
  4. data/README.md +321 -0
  5. data/Rakefile +32 -0
  6. data/docs/agent-md-spec.md +803 -0
  7. data/docs/parser-design.md +1369 -0
  8. data/docs/registry-api.md +882 -0
  9. data/examples/README.md +60 -0
  10. data/examples/manifests/changelog_writer.agent.md +81 -0
  11. data/examples/manifests/usage.rb +96 -0
  12. data/examples/memory_handoff/app/agents/researcher_agent.rb +36 -0
  13. data/examples/memory_handoff/app/agents/writer_agent.rb +41 -0
  14. data/examples/memory_handoff/usage.rb +45 -0
  15. data/examples/persistent_conversation/app/agents/support_agent.rb +59 -0
  16. data/examples/persistent_conversation/app/controllers/support_conversations_controller.rb +24 -0
  17. data/examples/persistent_conversation/app/views/agents/support/instructions.md.erb +8 -0
  18. data/examples/persistent_conversation/usage.rb +51 -0
  19. data/examples/reasoning/app/agents/analysis_agent.rb +52 -0
  20. data/examples/reasoning/usage.rb +52 -0
  21. data/examples/run_tracking/app/agents/report_agent.rb +30 -0
  22. data/examples/run_tracking/app/controllers/agent_runs_controller.rb +43 -0
  23. data/examples/run_tracking/app/jobs/document_analysis_job.rb +17 -0
  24. data/examples/run_tracking/app/services/document_analysis_run.rb +68 -0
  25. data/examples/run_tracking/usage.rb +85 -0
  26. data/examples/tool_streaming/app/agents/browser_agent.rb +65 -0
  27. data/examples/tool_streaming/app/channels/tool_status_channel.rb +24 -0
  28. data/examples/tool_streaming/app/views/browser_agent/tools/fetch_url.json.erb +15 -0
  29. data/examples/tool_streaming/usage.rb +47 -0
  30. data/lib/generators/solid_agent/agent/agent_generator.rb +95 -0
  31. data/lib/generators/solid_agent/agent/templates/action.text.erb +10 -0
  32. data/lib/generators/solid_agent/agent/templates/agent.rb.erb +93 -0
  33. data/lib/generators/solid_agent/context/context_generator.rb +124 -0
  34. data/lib/generators/solid_agent/context/templates/context_model.rb.erb +134 -0
  35. data/lib/generators/solid_agent/context/templates/create_context.rb.erb +32 -0
  36. data/lib/generators/solid_agent/context/templates/create_generations.rb.erb +46 -0
  37. data/lib/generators/solid_agent/context/templates/create_messages.rb.erb +37 -0
  38. data/lib/generators/solid_agent/context/templates/generation_model.rb.erb +51 -0
  39. data/lib/generators/solid_agent/context/templates/message_model.rb.erb +47 -0
  40. data/lib/generators/solid_agent/install/install_generator.rb +92 -0
  41. data/lib/generators/solid_agent/install/templates/agent_context.rb.erb +171 -0
  42. data/lib/generators/solid_agent/install/templates/agent_generation.rb.erb +76 -0
  43. data/lib/generators/solid_agent/install/templates/agent_memory.rb.erb +51 -0
  44. data/lib/generators/solid_agent/install/templates/agent_memory_entry.rb.erb +12 -0
  45. data/lib/generators/solid_agent/install/templates/agent_message.rb.erb +76 -0
  46. data/lib/generators/solid_agent/install/templates/agent_run.rb.erb +122 -0
  47. data/lib/generators/solid_agent/install/templates/create_agent_contexts.rb.erb +32 -0
  48. data/lib/generators/solid_agent/install/templates/create_agent_generations.rb.erb +51 -0
  49. data/lib/generators/solid_agent/install/templates/create_agent_memories.rb.erb +35 -0
  50. data/lib/generators/solid_agent/install/templates/create_agent_messages.rb.erb +38 -0
  51. data/lib/generators/solid_agent/install/templates/create_agent_runs.rb.erb +46 -0
  52. data/lib/generators/solid_agent/install/templates/initializer.rb.erb +51 -0
  53. data/lib/generators/solid_agent/manifest/manifest_generator.rb +209 -0
  54. data/lib/generators/solid_agent/manifest/templates/agent.md.erb +39 -0
  55. data/lib/generators/solid_agent/manifest/templates/prompt.erb +13 -0
  56. data/lib/generators/solid_agent/reasons/reasons_generator.rb +83 -0
  57. data/lib/generators/solid_agent/reasons/templates/add_reasoning_columns.rb.erb +12 -0
  58. data/lib/generators/solid_agent/tool/templates/tool.json.erb +19 -0
  59. data/lib/generators/solid_agent/tool/tool_generator.rb +117 -0
  60. data/lib/solid_agent/agent_manifest/agent_builder.rb +323 -0
  61. data/lib/solid_agent/agent_manifest/errors.rb +26 -0
  62. data/lib/solid_agent/agent_manifest/exporter_registry.rb +117 -0
  63. data/lib/solid_agent/agent_manifest/exporters/agent_md_exporter.rb +115 -0
  64. data/lib/solid_agent/agent_manifest/exporters/base_exporter.rb +152 -0
  65. data/lib/solid_agent/agent_manifest/exporters/crewai_exporter.rb +125 -0
  66. data/lib/solid_agent/agent_manifest/exporters/dotprompt_exporter.rb +92 -0
  67. data/lib/solid_agent/agent_manifest/input_schema.rb +154 -0
  68. data/lib/solid_agent/agent_manifest/manifest.rb +306 -0
  69. data/lib/solid_agent/agent_manifest/parser_registry.rb +185 -0
  70. data/lib/solid_agent/agent_manifest/parsers/agent_md_parser.rb +87 -0
  71. data/lib/solid_agent/agent_manifest/parsers/base_parser.rb +223 -0
  72. data/lib/solid_agent/agent_manifest/parsers/crewai_parser.rb +201 -0
  73. data/lib/solid_agent/agent_manifest/parsers/dotprompt_parser.rb +122 -0
  74. data/lib/solid_agent/agent_manifest/parsers/github_prompt_parser.rb +143 -0
  75. data/lib/solid_agent/agent_manifest/picoschema.rb +254 -0
  76. data/lib/solid_agent/agent_manifest/registry/auth.rb +103 -0
  77. data/lib/solid_agent/agent_manifest/registry/client.rb +384 -0
  78. data/lib/solid_agent/agent_manifest/resource.rb +103 -0
  79. data/lib/solid_agent/agent_manifest/tool.rb +160 -0
  80. data/lib/solid_agent/agent_manifest/validator.rb +368 -0
  81. data/lib/solid_agent/agent_manifest.rb +381 -0
  82. data/lib/solid_agent/engine.rb +16 -0
  83. data/lib/solid_agent/has_context.rb +670 -0
  84. data/lib/solid_agent/has_memory.rb +136 -0
  85. data/lib/solid_agent/has_reasons.rb +230 -0
  86. data/lib/solid_agent/has_tools.rb +257 -0
  87. data/lib/solid_agent/model_naming.rb +42 -0
  88. data/lib/solid_agent/model_pricing.rb +93 -0
  89. data/lib/solid_agent/reasonable/reason.rb +205 -0
  90. data/lib/solid_agent/reasonable.rb +181 -0
  91. data/lib/solid_agent/records/agent.rb +520 -0
  92. data/lib/solid_agent/records/agent_run.rb +520 -0
  93. data/lib/solid_agent/records/agent_template.rb +142 -0
  94. data/lib/solid_agent/records/agent_version.rb +141 -0
  95. data/lib/solid_agent/records/ownable.rb +130 -0
  96. data/lib/solid_agent/records.rb +152 -0
  97. data/lib/solid_agent/run_fingerprint.rb +51 -0
  98. data/lib/solid_agent/streams_tool_updates.rb +178 -0
  99. data/lib/solid_agent/tool_cache.rb +91 -0
  100. data/lib/solid_agent/version.rb +5 -0
  101. data/lib/solid_agent.rb +95 -0
  102. data/sig/solid_agent.rbs +4 -0
  103. metadata +174 -14
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "digest"
4
+ require "json"
5
+
6
+ # Caches the results of tool / MCP / service interactions so repeated calls
7
+ # with the same arguments reuse a persisted result instead of re-running the
8
+ # side effect (HTTP fetch, search, remote MCP call, ...).
9
+ #
10
+ # Works out of the box in Rails apps (backed by Rails.cache); any object
11
+ # responding to read/write can be substituted, so tests and non-Rails
12
+ # runtimes can inject their own store.
13
+ #
14
+ # @example Caching a tool implementation
15
+ # def fetch_url(url:)
16
+ # SolidAgent::ToolCache.fetch(tool: "fetch_url", args: { url: url }) do
17
+ # Net::HTTP.get_response(URI(url)).body
18
+ # end
19
+ # end
20
+ #
21
+ # @example Disabling globally (e.g. in tests)
22
+ # SolidAgent::ToolCache.enabled = false
23
+ module SolidAgent
24
+ module ToolCache
25
+ DEFAULT_TTL = 300 # seconds
26
+
27
+ class << self
28
+ attr_writer :enabled, :default_ttl, :store
29
+
30
+ def enabled
31
+ defined?(@enabled) ? @enabled : true
32
+ end
33
+
34
+ def default_ttl
35
+ @default_ttl || DEFAULT_TTL
36
+ end
37
+
38
+ def store
39
+ @store || (defined?(Rails) && Rails.respond_to?(:cache) ? Rails.cache : nil)
40
+ end
41
+
42
+ # Returns the cached result for (tool, args) or yields, caching the
43
+ # fresh result. Results that look like errors ({ error: ... }) are
44
+ # never cached, so transient failures don't stick.
45
+ #
46
+ # The returned hash is tagged with cached: true on cache hits so
47
+ # callers (and the model) can tell a replayed result from a fresh one.
48
+ def fetch(tool:, args: {}, ttl: nil, cache: store)
49
+ return yield unless enabled && cache
50
+
51
+ key = cache_key(tool, args)
52
+ cached = cache.read(key)
53
+ return tag_cached(cached) unless cached.nil?
54
+
55
+ result = yield
56
+ cache.write(key, result, expires_in: ttl || default_ttl) if cacheable?(result)
57
+ result
58
+ end
59
+
60
+ def cache_key(tool, args)
61
+ digest = Digest::SHA256.hexdigest(normalize_args(args).to_json)
62
+ "solid_agent:tool_cache:#{tool}:#{digest}"
63
+ end
64
+
65
+ private
66
+
67
+ def cacheable?(result)
68
+ return false if result.nil?
69
+ return !(result.key?(:error) || result.key?("error")) if result.respond_to?(:key?)
70
+
71
+ true
72
+ end
73
+
74
+ def tag_cached(result)
75
+ result.respond_to?(:merge) ? result.merge(cached: true) : result
76
+ end
77
+
78
+ # Stable key material regardless of hash ordering or string/symbol keys.
79
+ def normalize_args(args)
80
+ case args
81
+ when Hash
82
+ args.map { |k, v| [ k.to_s, normalize_args(v) ] }.sort_by(&:first)
83
+ when Array
84
+ args.map { |v| normalize_args(v) }
85
+ else
86
+ args
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidAgent
4
+ VERSION = "0.2.0"
5
+ end
data/lib/solid_agent.rb CHANGED
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The gem is written for a Rails host and used to assume one had already loaded
4
+ # ActiveSupport and ActiveModel for it — `require "solid_agent"` on its own
5
+ # raised NameError on ActiveSupport::Concern. Requiring the pieces we actually
6
+ # use makes the gem loadable from a plain Ruby process (a rake task, an IRB
7
+ # session, a non-Rails consumer of AgentManifest) and costs a Rails host
8
+ # nothing, since these are already loaded there.
9
+ #
10
+ # The core extensions are named one by one rather than pulled in with
11
+ # `active_support/all`: `safe_constantize` and `presence` are what the records
12
+ # seam calls, and a gem should not decide for its host that every monkey patch
13
+ # ActiveSupport ships is loaded.
14
+ require "active_support"
15
+ require "active_support/concern"
16
+ require "active_support/notifications"
17
+ require "active_support/core_ext/object/blank"
18
+ require "active_support/core_ext/string/inflections"
19
+ require "active_model"
20
+
21
+ require_relative "solid_agent/version"
22
+ require_relative "solid_agent/model_naming"
23
+ require_relative "solid_agent/records"
24
+ require_relative "solid_agent/tool_cache"
25
+ require_relative "solid_agent/model_pricing"
26
+ require_relative "solid_agent/run_fingerprint"
27
+
28
+ module SolidAgent
29
+ class Error < StandardError; end
30
+ class LoadError < Error; end
31
+
32
+ class << self
33
+ attr_accessor :context_class, :message_class, :generation_class
34
+
35
+ def configure
36
+ yield self if block_given?
37
+ end
38
+
39
+ # Unified agent loading from any source
40
+ #
41
+ # @param source [String, Hash, URI] File path, URL, JSON, YAML, or Hash
42
+ # @param format [Symbol] Force format (:agent_md, :json, :yaml, :dotprompt, :crewai)
43
+ # @param base_class [Class] Parent class for generated agent
44
+ # @param as [String] Register as constant with this name
45
+ # @return [Class] Generated agent class
46
+ #
47
+ # @example Load from file
48
+ # ResearchAgent = SolidAgent.agent("agents/research.agent.md")
49
+ #
50
+ # @example Load from URL
51
+ # WeatherAgent = SolidAgent.agent("https://registry.example.com/weather.agent.md")
52
+ #
53
+ # @example Load from hash
54
+ # QuickAgent = SolidAgent.agent({ name: "quick", model: "gpt-4o", instructions: "Be helpful" })
55
+ #
56
+ def agent(source, format: nil, base_class: nil, as: nil)
57
+ manifest = AgentManifest.load(source, format: format)
58
+ AgentManifest.build(manifest, base_class: base_class, class_name: as)
59
+ end
60
+
61
+ # Load multiple agents from a directory
62
+ #
63
+ # @param directory [String] Path to directory containing agent manifests
64
+ # @param pattern [String] Glob pattern for manifest files
65
+ # @param options [Hash] Options passed to agent()
66
+ # @return [Array<Class>] Array of generated agent classes
67
+ #
68
+ # @example Load all agents from config/agents
69
+ # SolidAgent.agents_from("config/agents")
70
+ #
71
+ def agents_from(directory, pattern: "**/*.agent.md", **options)
72
+ Dir.glob(File.join(directory, pattern)).map do |path|
73
+ agent(path, **options)
74
+ end
75
+ end
76
+ end
77
+
78
+ # Default configuration
79
+ self.context_class = "AgentContext"
80
+ self.message_class = "AgentMessage"
81
+ self.generation_class = "AgentGeneration"
82
+ end
83
+
84
+ require_relative "solid_agent/has_context"
85
+ require_relative "solid_agent/has_memory"
86
+ require_relative "solid_agent/has_tools"
87
+ require_relative "solid_agent/streams_tool_updates"
88
+ require_relative "solid_agent/reasonable"
89
+ require_relative "solid_agent/has_reasons"
90
+ require_relative "solid_agent/agent_manifest"
91
+
92
+ # Load Rails integration if Rails is present
93
+ if defined?(Rails::Engine)
94
+ require_relative "solid_agent/engine"
95
+ end
@@ -0,0 +1,4 @@
1
+ module SolidAgent
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata CHANGED
@@ -1,27 +1,188 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Bowen
8
- autorequire:
9
- bindir: bin
8
+ bindir: exe
10
9
  cert_chain: []
11
- date: 2024-05-29 00:00:00.000000000 Z
12
- dependencies: []
13
- description: A simple way to make Ruby AI Agents
14
- email: jusbowen@gmail.com
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: activeagent
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 1.0.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.0.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: activesupport
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '7.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '7.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: activerecord
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '7.0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '7.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: activemodel
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '7.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '7.0'
68
+ description: SolidAgent extends ActiveAgent with database-backed prompt context management,
69
+ declarative tool schemas, and real-time streaming updates. Provides has_context,
70
+ has_tools, and streams_tool_updates concerns for building robust AI agents.
71
+ email:
72
+ - JusBowen@gmail.com
15
73
  executables: []
16
74
  extensions: []
17
75
  extra_rdoc_files: []
18
76
  files:
77
+ - CHANGELOG.md
78
+ - LICENSE
79
+ - README.md
80
+ - Rakefile
81
+ - docs/agent-md-spec.md
82
+ - docs/parser-design.md
83
+ - docs/registry-api.md
84
+ - examples/README.md
85
+ - examples/manifests/changelog_writer.agent.md
86
+ - examples/manifests/usage.rb
87
+ - examples/memory_handoff/app/agents/researcher_agent.rb
88
+ - examples/memory_handoff/app/agents/writer_agent.rb
89
+ - examples/memory_handoff/usage.rb
90
+ - examples/persistent_conversation/app/agents/support_agent.rb
91
+ - examples/persistent_conversation/app/controllers/support_conversations_controller.rb
92
+ - examples/persistent_conversation/app/views/agents/support/instructions.md.erb
93
+ - examples/persistent_conversation/usage.rb
94
+ - examples/reasoning/app/agents/analysis_agent.rb
95
+ - examples/reasoning/usage.rb
96
+ - examples/run_tracking/app/agents/report_agent.rb
97
+ - examples/run_tracking/app/controllers/agent_runs_controller.rb
98
+ - examples/run_tracking/app/jobs/document_analysis_job.rb
99
+ - examples/run_tracking/app/services/document_analysis_run.rb
100
+ - examples/run_tracking/usage.rb
101
+ - examples/tool_streaming/app/agents/browser_agent.rb
102
+ - examples/tool_streaming/app/channels/tool_status_channel.rb
103
+ - examples/tool_streaming/app/views/browser_agent/tools/fetch_url.json.erb
104
+ - examples/tool_streaming/usage.rb
105
+ - lib/generators/solid_agent/agent/agent_generator.rb
106
+ - lib/generators/solid_agent/agent/templates/action.text.erb
107
+ - lib/generators/solid_agent/agent/templates/agent.rb.erb
108
+ - lib/generators/solid_agent/context/context_generator.rb
109
+ - lib/generators/solid_agent/context/templates/context_model.rb.erb
110
+ - lib/generators/solid_agent/context/templates/create_context.rb.erb
111
+ - lib/generators/solid_agent/context/templates/create_generations.rb.erb
112
+ - lib/generators/solid_agent/context/templates/create_messages.rb.erb
113
+ - lib/generators/solid_agent/context/templates/generation_model.rb.erb
114
+ - lib/generators/solid_agent/context/templates/message_model.rb.erb
115
+ - lib/generators/solid_agent/install/install_generator.rb
116
+ - lib/generators/solid_agent/install/templates/agent_context.rb.erb
117
+ - lib/generators/solid_agent/install/templates/agent_generation.rb.erb
118
+ - lib/generators/solid_agent/install/templates/agent_memory.rb.erb
119
+ - lib/generators/solid_agent/install/templates/agent_memory_entry.rb.erb
120
+ - lib/generators/solid_agent/install/templates/agent_message.rb.erb
121
+ - lib/generators/solid_agent/install/templates/agent_run.rb.erb
122
+ - lib/generators/solid_agent/install/templates/create_agent_contexts.rb.erb
123
+ - lib/generators/solid_agent/install/templates/create_agent_generations.rb.erb
124
+ - lib/generators/solid_agent/install/templates/create_agent_memories.rb.erb
125
+ - lib/generators/solid_agent/install/templates/create_agent_messages.rb.erb
126
+ - lib/generators/solid_agent/install/templates/create_agent_runs.rb.erb
127
+ - lib/generators/solid_agent/install/templates/initializer.rb.erb
128
+ - lib/generators/solid_agent/manifest/manifest_generator.rb
129
+ - lib/generators/solid_agent/manifest/templates/agent.md.erb
130
+ - lib/generators/solid_agent/manifest/templates/prompt.erb
131
+ - lib/generators/solid_agent/reasons/reasons_generator.rb
132
+ - lib/generators/solid_agent/reasons/templates/add_reasoning_columns.rb.erb
133
+ - lib/generators/solid_agent/tool/templates/tool.json.erb
134
+ - lib/generators/solid_agent/tool/tool_generator.rb
19
135
  - lib/solid_agent.rb
20
- homepage: https://rubygems.org/gems/solid_eagent
136
+ - lib/solid_agent/agent_manifest.rb
137
+ - lib/solid_agent/agent_manifest/agent_builder.rb
138
+ - lib/solid_agent/agent_manifest/errors.rb
139
+ - lib/solid_agent/agent_manifest/exporter_registry.rb
140
+ - lib/solid_agent/agent_manifest/exporters/agent_md_exporter.rb
141
+ - lib/solid_agent/agent_manifest/exporters/base_exporter.rb
142
+ - lib/solid_agent/agent_manifest/exporters/crewai_exporter.rb
143
+ - lib/solid_agent/agent_manifest/exporters/dotprompt_exporter.rb
144
+ - lib/solid_agent/agent_manifest/input_schema.rb
145
+ - lib/solid_agent/agent_manifest/manifest.rb
146
+ - lib/solid_agent/agent_manifest/parser_registry.rb
147
+ - lib/solid_agent/agent_manifest/parsers/agent_md_parser.rb
148
+ - lib/solid_agent/agent_manifest/parsers/base_parser.rb
149
+ - lib/solid_agent/agent_manifest/parsers/crewai_parser.rb
150
+ - lib/solid_agent/agent_manifest/parsers/dotprompt_parser.rb
151
+ - lib/solid_agent/agent_manifest/parsers/github_prompt_parser.rb
152
+ - lib/solid_agent/agent_manifest/picoschema.rb
153
+ - lib/solid_agent/agent_manifest/registry/auth.rb
154
+ - lib/solid_agent/agent_manifest/registry/client.rb
155
+ - lib/solid_agent/agent_manifest/resource.rb
156
+ - lib/solid_agent/agent_manifest/tool.rb
157
+ - lib/solid_agent/agent_manifest/validator.rb
158
+ - lib/solid_agent/engine.rb
159
+ - lib/solid_agent/has_context.rb
160
+ - lib/solid_agent/has_memory.rb
161
+ - lib/solid_agent/has_reasons.rb
162
+ - lib/solid_agent/has_tools.rb
163
+ - lib/solid_agent/model_naming.rb
164
+ - lib/solid_agent/model_pricing.rb
165
+ - lib/solid_agent/reasonable.rb
166
+ - lib/solid_agent/reasonable/reason.rb
167
+ - lib/solid_agent/records.rb
168
+ - lib/solid_agent/records/agent.rb
169
+ - lib/solid_agent/records/agent_run.rb
170
+ - lib/solid_agent/records/agent_template.rb
171
+ - lib/solid_agent/records/agent_version.rb
172
+ - lib/solid_agent/records/ownable.rb
173
+ - lib/solid_agent/run_fingerprint.rb
174
+ - lib/solid_agent/streams_tool_updates.rb
175
+ - lib/solid_agent/tool_cache.rb
176
+ - lib/solid_agent/version.rb
177
+ - sig/solid_agent.rbs
178
+ homepage: https://docs.activeagents.ai/solid_agent
21
179
  licenses:
22
180
  - MIT
23
- metadata: {}
24
- post_install_message:
181
+ metadata:
182
+ homepage_uri: https://docs.activeagents.ai/solid_agent
183
+ source_code_uri: https://github.com/activeagents/solid_agent
184
+ changelog_uri: https://github.com/activeagents/solid_agent/blob/main/CHANGELOG.md
185
+ documentation_uri: https://docs.activeagents.ai/solid_agent
25
186
  rdoc_options: []
26
187
  require_paths:
27
188
  - lib
@@ -29,15 +190,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
29
190
  requirements:
30
191
  - - ">="
31
192
  - !ruby/object:Gem::Version
32
- version: '0'
193
+ version: 3.0.0
33
194
  required_rubygems_version: !ruby/object:Gem::Requirement
34
195
  requirements:
35
196
  - - ">="
36
197
  - !ruby/object:Gem::Version
37
198
  version: '0'
38
199
  requirements: []
39
- rubygems_version: 3.5.3
40
- signing_key:
200
+ rubygems_version: 3.7.2
41
201
  specification_version: 4
42
- summary: A simple way to make Ruby AI Agents
202
+ summary: Database-backed context, tools, and streaming for ActiveAgent
43
203
  test_files: []