sublayer 0.0.6 → 0.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a49a0cdd72c4a8171f246646ac8021f72bcdf35a0591931614cbbf7599c3bad
4
- data.tar.gz: 3e0da0784fc6ace719556110c47a4145acb01d11ff90555bc25fd7ecb7c6f43f
3
+ metadata.gz: 07ead9b290805b3d7e173f8e613dd4670bdd304a094cb7a00505ac9d94285b9b
4
+ data.tar.gz: 89eba4a05eebb012013a68e06f4d44e8a1710db0ea8a808ed03557241f4baf74
5
5
  SHA512:
6
- metadata.gz: 9fc567c2e6f84886b525ccac9a842b16e6e519b17d46d6eb86cec502eeafb29c110936ad8a11978124b478f8a3271415c8f96473aaebbd3d28f4678a8736340f
7
- data.tar.gz: 17a53b8f40146f09f2380f4c25ad86526d6b78dac8562ab1a06f047ab05e16646cdac4bc1453533f313e6c9bdb5a6e1537a7f8efb2ab515286608eec990ee26e
6
+ metadata.gz: a6f07414c4a7a2798f2b93133bd921cae8ffe380104f813564109ab16b985dd58c416f6b176f33d75910898b56d47ea98262a1f1035071cb29dddf2f53277b82
7
+ data.tar.gz: 45953c8a3a63c526bd310f4928a1570210e54e6e1be5718ff50b28041a8e9e93ca175d8d984ca6abd8aa729b87f5c84bf922e547c6a8f22ef62272bd240eade2
data/README.md CHANGED
@@ -26,7 +26,7 @@ Sublayer is model-agnostic and can be used with any AI model. Below are the
26
26
 
27
27
  Expects you to have an OpenAI API key set in the `OPENAI_API_KEY` environment variable.
28
28
 
29
- Visit [OpenAI](https://openai.com/product) to get an API key.
29
+ Visit [OpenAI](https://openai.com/product) to get an API key.
30
30
 
31
31
  Usage:
32
32
  ```ruby
@@ -133,12 +133,12 @@ Generators are responsible for generating specific outputs based on input data.
133
133
  They focus on a single generation task and do not perform any actions or complex
134
134
  decision-making. Generators are the building blocks of the Sublayer framework.
135
135
 
136
- Examples (in the /examples/ directory):
137
- - CodeFromDescriptionGenerator: Generates code based on a description and the
136
+ Examples (in the `/lib/sublayer/generators/examples` directory):
137
+ - `CodeFromDescriptionGenerator`: Generates code based on a description and the
138
138
  technologies used.
139
- - DescriptionFromCodeGenerator: Generates a description of the code passed in to
139
+ - `DescriptionFromCodeGenerator`: Generates a description of the code passed in to
140
140
  it.
141
- - CodeFromBlueprintGenerator: Generates code based on a blueprint, a blueprint
141
+ - `CodeFromBlueprintGenerator`: Generates code based on a blueprint, a blueprint
142
142
  description, and a description of the desired code.
143
143
 
144
144
 
@@ -4,7 +4,21 @@ module Sublayer
4
4
  attr_reader :name
5
5
 
6
6
  def self.create(options)
7
- ("Sublayer::Components::OutputAdapters::"+options[:type].to_s.camelize).constantize.new(options)
7
+ klass = if options.has_key?(:class)
8
+ klass = options[:class]
9
+ if klass.is_a?(String)
10
+ klass.constantize
11
+ elsif klass.is_a?(Class)
12
+ klass
13
+ else
14
+ raise "Invalid :class option"
15
+ end
16
+ elsif (type = options[:type])
17
+ "Sublayer::Components::OutputAdapters::#{type.to_s.camelize}".constantize
18
+ else
19
+ raise "Output adapter must be specified with :class or :type"
20
+ end
21
+ klass.new(options)
8
22
  end
9
23
  end
10
24
  end
@@ -30,7 +30,7 @@ module Sublayer
30
30
  response = HTTParty.post(
31
31
  "https://api.anthropic.com/v1/messages",
32
32
  headers: {
33
- "x-api-key": ENV["ANTHROPIC_API_KEY"],
33
+ "x-api-key": ENV.fetch("ANTHROPIC_API_KEY"),
34
34
  "anthropic-version": "2023-06-01",
35
35
  "content-type": "application/json"
36
36
  },
@@ -5,7 +5,7 @@ module Sublayer
5
5
  module Providers
6
6
  class OpenAI
7
7
  def self.call(prompt:, output_adapter:)
8
- client = ::OpenAI::Client.new(access_token: ENV["OPENAI_API_KEY"])
8
+ client = ::OpenAI::Client.new(access_token: ENV.fetch("OPENAI_API_KEY"))
9
9
 
10
10
  response = client.chat(
11
11
  parameters: {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sublayer
4
- VERSION = "0.0.6"
4
+ VERSION = "0.0.7"
5
5
  end
data/sublayer.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.metadata["homepage_uri"] = "https://docs.sublayer.com"
18
18
  spec.metadata["documentation_uri"] = "https://docs.sublayer.com"
19
19
  spec.metadata["bug_tracker_uri"] = "https://github.com/sublayerapp/sublayer/issues"
20
+ spec.metadata["source_code_uri"] = "https://github.com/sublayerapp/sublayer"
20
21
 
21
22
  # Specify which files should be added to the gem when it is released.
22
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -37,6 +38,8 @@ Gem::Specification.new do |spec|
37
38
  spec.add_dependency "httparty"
38
39
 
39
40
  spec.add_development_dependency "rspec", "~> 3.12"
40
- spec.add_development_dependency "pry", " ~> 0.14"
41
+ spec.add_development_dependency "pry", "~> 0.14"
42
+ spec.add_development_dependency "vcr", "~> 6.0"
43
+ spec.add_development_dependency "webmock", "~> 3.0"
41
44
  spec.add_development_dependency "clag"
42
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sublayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Werner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-14 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-openai
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.14'
125
+ - !ruby/object:Gem::Dependency
126
+ name: vcr
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '6.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '6.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.0'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: clag
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -147,16 +175,16 @@ files:
147
175
  - LICENSE
148
176
  - README.md
149
177
  - Rakefile
150
- - examples/code_from_blueprint_generator.rb
151
- - examples/code_from_description_generator.rb
152
- - examples/description_from_code_generator.rb
153
- - examples/invalid_to_valid_json_generator.rb
154
178
  - lib/sublayer.rb
155
179
  - lib/sublayer/actions/base.rb
156
180
  - lib/sublayer/agents/base.rb
157
181
  - lib/sublayer/components/output_adapters.rb
158
182
  - lib/sublayer/components/output_adapters/single_string.rb
159
183
  - lib/sublayer/generators/base.rb
184
+ - lib/sublayer/generators/examples/code_from_blueprint_generator.rb
185
+ - lib/sublayer/generators/examples/code_from_description_generator.rb
186
+ - lib/sublayer/generators/examples/description_from_code_generator.rb
187
+ - lib/sublayer/generators/examples/invalid_to_valid_json_generator.rb
160
188
  - lib/sublayer/providers/claude.rb
161
189
  - lib/sublayer/providers/gemini.rb
162
190
  - lib/sublayer/providers/groq.rb
@@ -172,6 +200,7 @@ metadata:
172
200
  homepage_uri: https://docs.sublayer.com
173
201
  documentation_uri: https://docs.sublayer.com
174
202
  bug_tracker_uri: https://github.com/sublayerapp/sublayer/issues
203
+ source_code_uri: https://github.com/sublayerapp/sublayer
175
204
  post_install_message:
176
205
  rdoc_options: []
177
206
  require_paths: