sublayer 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a49a0cdd72c4a8171f246646ac8021f72bcdf35a0591931614cbbf7599c3bad
4
- data.tar.gz: 3e0da0784fc6ace719556110c47a4145acb01d11ff90555bc25fd7ecb7c6f43f
3
+ metadata.gz: c93987f0281e2fa58ba4373a7eb3be0e93d6053dd211379ee0ec1f3e26dedf45
4
+ data.tar.gz: 0b8473c287e9c601ab91bb0965521a69c71bd835576c5f4f56a3cdadc3fac2c3
5
5
  SHA512:
6
- metadata.gz: 9fc567c2e6f84886b525ccac9a842b16e6e519b17d46d6eb86cec502eeafb29c110936ad8a11978124b478f8a3271415c8f96473aaebbd3d28f4678a8736340f
7
- data.tar.gz: 17a53b8f40146f09f2380f4c25ad86526d6b78dac8562ab1a06f047ab05e16646cdac4bc1453533f313e6c9bdb5a6e1537a7f8efb2ab515286608eec990ee26e
6
+ metadata.gz: 40e50ae299dfd876158756ed97e71d330bbc05ad24fad400308e22af81ea16c09213d46b54deff1bb11de1fe8ab164a60fb094e9f857db383584fca5348f4d4b
7
+ data.tar.gz: a66a4a3271bf886dc20cebed86d414c63046dade251bd05fa4f3e6f7a4898671ec323df45ea0bafefbe63b13c4667e9da33bc243b677a5f280c3b278501b51f5
data/README.md CHANGED
@@ -6,6 +6,20 @@ powered applications in Ruby.
6
6
 
7
7
  For more detailed documentation visit our documentation site: [https://docs.sublayer.com](https://docs.sublayer.com).
8
8
 
9
+ ## Note on Versioning
10
+
11
+ Pre-1.0 we anticipate many breaking changes to the API. Our current plan is to
12
+ keep breaking changes to minor, 0.x releases, and patch releases (0.x.y) will be used
13
+ for new features and bug fixes.
14
+
15
+ To maintain stability in your application, we recommend pinning the version of
16
+ Sublayer in your Gemfile to a specific minor version. For example, to pin to
17
+ version 0.0.x, you would add the following line to your Gemfile:
18
+
19
+ ```ruby
20
+ gem 'sublayer', '~> 0.0'
21
+ ```
22
+
9
23
  ## Installation
10
24
 
11
25
  Install the gem by running the following commands:
@@ -15,7 +29,7 @@ Install the gem by running the following commands:
15
29
  Or add this line to your application's Gemfile:
16
30
 
17
31
  ```ruby
18
- gem 'sublayer'
32
+ gem 'sublayer', '~> 0.0'
19
33
  ```
20
34
 
21
35
  ## Choose your AI Model
@@ -26,7 +40,7 @@ Sublayer is model-agnostic and can be used with any AI model. Below are the
26
40
 
27
41
  Expects you to have an OpenAI API key set in the `OPENAI_API_KEY` environment variable.
28
42
 
29
- Visit [OpenAI](https://openai.com/product) to get an API key.
43
+ Visit [OpenAI](https://openai.com/product) to get an API key.
30
44
 
31
45
  Usage:
32
46
  ```ruby
@@ -133,12 +147,12 @@ Generators are responsible for generating specific outputs based on input data.
133
147
  They focus on a single generation task and do not perform any actions or complex
134
148
  decision-making. Generators are the building blocks of the Sublayer framework.
135
149
 
136
- Examples (in the /examples/ directory):
137
- - CodeFromDescriptionGenerator: Generates code based on a description and the
150
+ Examples (in the `/lib/sublayer/generators/examples` directory):
151
+ - `CodeFromDescriptionGenerator`: Generates code based on a description and the
138
152
  technologies used.
139
- - DescriptionFromCodeGenerator: Generates a description of the code passed in to
153
+ - `DescriptionFromCodeGenerator`: Generates a description of the code passed in to
140
154
  it.
141
- - CodeFromBlueprintGenerator: Generates code based on a blueprint, a blueprint
155
+ - `CodeFromBlueprintGenerator`: Generates code based on a blueprint, a blueprint
142
156
  description, and a description of the desired code.
143
157
 
144
158
 
@@ -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.8"
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.
@@ -33,10 +34,12 @@ Gem::Specification.new do |spec|
33
34
  spec.add_dependency "colorize"
34
35
  spec.add_dependency "activesupport"
35
36
  spec.add_dependency "zeitwerk"
36
- spec.add_dependency "nokogiri"
37
+ spec.add_dependency "nokogiri", "~> 1.16.5"
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.8
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-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-openai
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: nokogiri
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 1.16.5
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 1.16.5
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: httparty
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -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: