sublayer 0.2.7 → 0.2.9

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: 303d94d0e110bb92231590e4fde380733d33f2febd3782dc71b93a431292ee3e
4
- data.tar.gz: 27b87bdc5a2fab40612a1aad56b10184fcd90100094f66c46ae43ff25c1f1cdb
3
+ metadata.gz: 5de174c31ddd656d2e23b55f17b289a9fffcb6f088eda3ae1a4c41b61a6b872b
4
+ data.tar.gz: 3871f87e40603e1fb27bb98d967fe220781bdab8ddb6352e5c7a85126f5f0b33
5
5
  SHA512:
6
- metadata.gz: 8fce247e8089440f0f604c23c9f76d56572304ac9ac5f86fcb8d6777387d45a0d6118b48e31cdaf3e920f724f4702e42890061abbf54294eb6bac919f9ee92ef
7
- data.tar.gz: 9715cce6c6b31c9924e0699ed756d34434661e186c1a24377ee5451d3fab88f56e7cc5adc772dddcaf48d8f82755ff6ab790c2097e1d72fe6b8c001e6d258035
6
+ metadata.gz: 335007bd7883dace639be6bd3170ff229a38990fe7947e4e2b87507c0a9e765168fc6956e85dc4dfdbbedd7af9c2bad96fb5bed48e00ffc4fc6ada81ad09f44b
7
+ data.tar.gz: dcf104511713218d19f21e879df8ccb2509e6bdff54fe7ed6c81da48d14bb517bb39c7b0cdc6f467091d3d1435574cfeada0e98606b297991b7bf0dbb3121a14
data/.contextignore ADDED
@@ -0,0 +1,15 @@
1
+ .git/**/*
2
+ .github/**/*
3
+ .ruby-lsp/**/*
4
+ .contextignore
5
+ .cursorignore
6
+ .gitignore
7
+ .rspec_status
8
+
9
+ bin/**/*
10
+ Gemfile.lock
11
+ LICENSE
12
+ Rakefile
13
+ sublayer.gemspec
14
+ spec/vcr_cassettes
15
+ spec/spec_helper.rb
@@ -0,0 +1,80 @@
1
+ module Sublayer
2
+ module Commands
3
+ class CLIProject < Thor::Group
4
+ include Thor::Actions
5
+
6
+ argument :project_name
7
+
8
+ class_option :provider, type: :string, desc: "AI provider (OpenAI, Claude, or Gemini)", aliases: :p
9
+ class_option :model, type: :string, desc: "AI model name to use (e.g. gpt-4o, claude-3-haiku-20240307, gemini-1.5-flash-latest)", aliases: :m
10
+
11
+ def self.source_root
12
+ File.dirname(__FILE__)
13
+ end
14
+
15
+ def sublayer_version
16
+ Sublayer::VERSION
17
+ end
18
+
19
+ def ask_for_project_details
20
+ @project_name = project_name
21
+ @ai_provider = options[:provider] || ask("Select an AI provider:", default: "OpenAI", limited_to: %w[OpenAI Claude Gemini])
22
+ @ai_model = options[:model] || select_ai_model
23
+ end
24
+
25
+ def create_project_directory
26
+ say "Creating project directory", :green
27
+
28
+ empty_directory project_name
29
+ end
30
+
31
+ def copy_template_files
32
+ say "Copying template files", :green
33
+
34
+ directory "../templates/cli", project_name
35
+ end
36
+
37
+ def generate_configuration
38
+ say "Generating configuration", :green
39
+
40
+ config = {
41
+ project_name: @project_name,
42
+ project_template: "CLI",
43
+ ai_provider: @ai_provider,
44
+ ai_model: @ai_model
45
+ }
46
+
47
+ create_file File.join(project_name, "lib", project_name, "config", "sublayer.yml"), YAML.dump(config)
48
+ end
49
+
50
+ def finalize_project
51
+ say "Finalizing project", :green
52
+
53
+ inside(project_name) do
54
+ chmod("bin/#{project_name}", "+x")
55
+ run("git init") if yes?("Initialize a git repository?")
56
+ run("bundle install") if yes?("Install gems?")
57
+ end
58
+ end
59
+
60
+ def print_next_steps
61
+ say "\nSublayer project '#{project_name}' created successfully!", :green
62
+ say "To get started, run:"
63
+ say " cd #{project_name}"
64
+ say " ./bin/#{project_name}"
65
+ end
66
+
67
+ private
68
+ def select_ai_model
69
+ case @ai_provider
70
+ when "OpenAI"
71
+ ask("Which OpenAI model would you like to use?", default: "gpt-4o", limited_to: %w[gpt-4o gpt-4o-mini gpt-4-turbo gpt-3.5-turbo])
72
+ when "Claude"
73
+ ask("Which Anthropic model would you like to use?", default: "claude-3-5-sonnet-20240620", limited_to: %w[claude-3-5-sonnet-20240620 claude-3-opus-20240620 claude-3-haiku-20240307])
74
+ when "Gemini"
75
+ ask("Which Google model would you like to use?", default: "gemini-1.5-flash-latest", limited_to: %w[gemini-1.5-flash-latest gemini-1.5-pro-latest])
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,70 @@
1
+ module Sublayer
2
+ module Commands
3
+ class GithubActionProject < Thor::Group
4
+ attr_reader :ai_provider_key
5
+
6
+ include Thor::Actions
7
+
8
+ argument :project_name
9
+
10
+ class_option :provider, type: :string, desc: "AI provider (OpenAI, Claude, or Gemini)", aliases: :p
11
+ class_option :model, type: :string, desc: "AI model name to use (e.g. gpt-4o, claude-3-haiku-20240307, gemini-1.5-flash-latest)", aliases: :m
12
+
13
+ def self.source_root
14
+ File.dirname(__FILE__)
15
+ end
16
+
17
+ def sublayer_version
18
+ Sublayer::VERSION
19
+ end
20
+
21
+ def ask_for_project_details
22
+ @ai_provider = options[:provider] || ask("Select an AI provider:", default: "OpenAI", limited_to: %w[OpenAI Claude Gemini])
23
+ @ai_model = options[:model] || select_ai_model
24
+ end
25
+
26
+ def create_project_directory
27
+ say "Creating project directory", :green
28
+
29
+ empty_directory ".github/workflows"
30
+ end
31
+
32
+ def copy_template_files
33
+ say "Copying template files", :green
34
+
35
+ directory "../templates/github_action", ".github/workflows"
36
+ end
37
+
38
+
39
+ def generate_configuration
40
+
41
+ end
42
+
43
+ def finalize_project
44
+
45
+ end
46
+
47
+ def print_next_steps
48
+ say "\nSublayer Github Action Project '#{project_name}' created successfully!", :green
49
+ say "To get started: "
50
+ say "Create some Sublayer Actions and Sublayer generators within '.github/workflows/#{project_name}/{actions/,generators/}'"
51
+ say "And edit the file at '.github/workflows/#{project_name}.yml' to set up what you want the action triggered by"
52
+ end
53
+
54
+ private
55
+ def select_ai_model
56
+ case @ai_provider
57
+ when "OpenAI"
58
+ @ai_provider_key = "OPENAI_API_KEY"
59
+ ask("Which OpenAI model would you like to use?", default: "gpt-4o", limited_to: %w[gpt-4o gpt-4o-mini gpt-4-turbo gpt-3.5-turbo])
60
+ when "Claude"
61
+ @ai_provider_key = "ANTHROPIC_API_KEY"
62
+ ask("Which Anthropic model would you like to use?", default: "claude-3-5-sonnet-20240620", limited_to: %w[claude-3-5-sonnet-20240620 claude-3-opus-20240620 claude-3-haiku-20240307])
63
+ when "Gemini"
64
+ @ai_provider_key = "GEMINI_API_KEY"
65
+ ask("Which Google model would you like to use?", default: "gemini-1.5-flash-latest", limited_to: %w[gemini-1.5-flash-latest gemini-1.5-pro-latest])
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -5,7 +5,7 @@ module Sublayer
5
5
 
6
6
  argument :project_name, type: :string, desc: "The name of your project"
7
7
 
8
- class_option :template, type: :string, desc: "Type of project (CLI or QuickScript)", aliases: :t
8
+ class_option :template, type: :string, desc: "Type of project (CLI, GithubAction, QuickScript)", aliases: :t
9
9
  class_option :provider, type: :string, desc: "AI provider (OpenAI, Claude, or Gemini)", aliases: :p
10
10
  class_option :model, type: :string, desc: "AI model name to use (e.g. gpt-4o, claude-3-haiku-20240307, gemini-1.5-flash-latest)", aliases: :m
11
11
 
@@ -21,98 +21,19 @@ module Sublayer
21
21
  "sublayer new PROJECT_NAME"
22
22
  end
23
23
 
24
- def ask_for_project_details
25
- puts options[:template]
26
- @project_template = options[:template] || ask("Select a project template:", default: "CLI", limited_to: %w[CLI QuickScript])
27
- @ai_provider = options[:provider] || ask("Select an AI provider:", default: "OpenAI", limited_to: %w[OpenAI Claude Gemini])
28
- @ai_model = options[:model] || select_ai_model
29
- end
30
-
31
- def create_project_directory
32
- say "Creating project directory", :green
33
- empty_directory project_name
34
- end
35
-
36
- def copy_template_files
37
- say "Copying template files", :green
38
- template_dir = @project_template == "CLI" ? "cli" : "quick_script"
39
- directory "../templates/#{template_dir}", project_name
40
- empty_directory File.join(project_name, "log") if @project_template =="CLI"
41
- end
42
-
43
- def generate_config_file
44
- say "Generating configuration", :green
24
+ def create_project
25
+ @project_template = options[:template] || ask("Select a project template:", default: "CLI", limited_to: %w[CLI GithubAction QuickScript])
45
26
 
46
- config = {
47
- project_name: project_name,
48
- project_template: @project_template,
49
- ai_provider: @ai_provider,
50
- ai_model: @ai_model
51
- }
52
-
53
- if @project_template == "CLI"
54
- create_file File.join(project_name, "lib", project_name, "config", "sublayer.yml"), YAML.dump(config)
27
+ case @project_template.downcase
28
+ when 'cli'
29
+ invoke Commands::CLIProject, [project_name], options
30
+ when 'githubaction', 'github_action'
31
+ invoke Commands::GithubActionProject, [project_name], options
32
+ when 'quickscript', 'quick_script'
33
+ invoke Commands::QuickScriptProject, [project_name], options
55
34
  else
56
- append_to_file File.join(project_name, "#{project_name}.rb") do
57
- <<~CONFIG
58
- Sublayer.configuration.ai_provider = Sublayer::Providers::#{config[:ai_provider]}
59
- Sublayer.configuration.ai_model = "#{config[:ai_model]}"
60
- CONFIG
61
- end
62
- end
63
- end
64
-
65
- def finalize_project
66
- say "Finalizing project", :green
67
- inside(project_name) do
68
- if @project_template == "CLI"
69
- chmod("bin/#{project_name}", "+x")
70
- run("bundle install") if yes?("Install gems?")
71
- else
72
- append_to_file "#{project_name}.rb" do
73
- <<~INSTRUCTIONS
74
- puts "Welcome to your quick Sublayer script!"
75
- puts "To get started, create some generators, actions, or agents in their respective directories and call them here"
76
- puts "For more information, visit https://docs.sublayer.com"
77
- INSTRUCTIONS
78
- end
79
- end
80
-
81
- run("git init") if yes?("Initialize a git repository?")
82
- end
83
- end
84
-
85
- def print_next_steps
86
- say "\nSublayer project '#{project_name}' created successfully!", :green
87
- say "To get started, run:"
88
- say " cd #{project_name}"
89
- if @project_template == "CLI"
90
- say " ./bin/#{project_name}"
91
- else
92
- say " ruby #{project_name}.rb"
93
- end
94
- end
95
-
96
- private
97
-
98
- def select_ai_model
99
- case @ai_provider
100
- when "OpenAI"
101
- ask("Which OpenAI model would you like to use?", default: "gpt-4o", limited_to: %w[gpt-4o gpt-4o-mini gpt-4-turbo gpt-3.5-turbo])
102
- when "Claude"
103
- ask("Which Anthropic model would you like to use?", default: "claude-3-5-sonnet-20240620", limited_to: %w[claude-3-5-sonnet-20240620 claude-3-opus-20240620 claude-3-haiku-20240307])
104
- when "Gemini"
105
- ask("Which Google model would you like to use?", default: "gemini-1.5-flash-latest", limited_to: %w[gemini-1.5-flash-latest gemini-1.5-pro-latest])
106
- end
107
- end
108
-
109
- def rename_project_name_directory
110
- old_path = File.join(project_name, "lib", "PROJECT_NAME")
111
- new_path = File.join(project_name, "lib", project_name.gsub("-", "_").downcase)
112
-
113
- if File.directory?(old_path)
114
- say "Renaming project directory", :green
115
- FileUtils.mv(old_path, new_path)
35
+ say "Unknown project template: #{@project_template}", :red
36
+ exit 1
116
37
  end
117
38
  end
118
39
  end
@@ -0,0 +1,79 @@
1
+ module Sublayer
2
+ module Commands
3
+ class QuickScriptProject < Thor::Group
4
+ include Thor::Actions
5
+
6
+ argument :project_name
7
+
8
+ class_option :provider, type: :string, desc: "AI provider (OpenAI, Claude, or Gemini)", aliases: :p
9
+ class_option :model, type: :string, desc: "AI model name to use (e.g. gpt-4o, claude-3-haiku-20240307, gemini-1.5-flash-latest)", aliases: :m
10
+
11
+ def self.source_root
12
+ File.dirname(__FILE__)
13
+ end
14
+
15
+ def sublayer_version
16
+ Sublayer::VERSION
17
+ end
18
+
19
+ def ask_for_project_details
20
+ @ai_provider = options[:provider] || ask("Select an AI provider:", default: "OpenAI", limited_to: %w[OpenAI Claude Gemini])
21
+ @ai_model = options[:model] || select_ai_model
22
+ end
23
+
24
+ def create_project_directory
25
+ say "Creating project directory", :green
26
+
27
+ empty_directory project_name
28
+ end
29
+
30
+ def copy_template_files
31
+ say "Copying template files", :green
32
+
33
+ directory "../templates/quick_script", project_name
34
+ end
35
+
36
+ def generate_configuration
37
+ append_to_file File.join(project_name, "#{project_name}.rb") do
38
+ <<~CONFIG
39
+ Sublayer.configuration.ai_provider = Sublayer::Providers::#{@ai_provider}
40
+ Sublayer.configuration.ai_model = "#{@ai_model}"
41
+ CONFIG
42
+ end
43
+ end
44
+
45
+ def finalize_project
46
+ inside(project_name) do
47
+ append_to_file "#{project_name}.rb" do
48
+ <<~INSTRUCTIONS
49
+ puts "Welcome to your quick Sublayer script!"
50
+ puts "To get started, create some generators, actions, or agents in their respective directories and call them here"
51
+ puts "For more information, visit https://docs.sublayer.com"
52
+ INSTRUCTIONS
53
+ end
54
+
55
+ run("git init") if yes?("Initialize a git repository?")
56
+ end
57
+ end
58
+
59
+ def print_next_steps
60
+ say "\nSublayer project '#{project_name}' created successfully!", :green
61
+ say "To get started, run:"
62
+ say " cd #{project_name}"
63
+ say " ruby #{project_name}.rb"
64
+ end
65
+
66
+ private
67
+ def select_ai_model
68
+ case @ai_provider
69
+ when "OpenAI"
70
+ ask("Which OpenAI model would you like to use?", default: "gpt-4o", limited_to: %w[gpt-4o gpt-4o-mini gpt-4-turbo gpt-3.5-turbo])
71
+ when "Claude"
72
+ ask("Which Anthropic model would you like to use?", default: "claude-3-5-sonnet-20240620", limited_to: %w[claude-3-5-sonnet-20240620 claude-3-opus-20240620 claude-3-haiku-20240307])
73
+ when "Gemini"
74
+ ask("Which Google model would you like to use?", default: "gemini-1.5-flash-latest", limited_to: %w[gemini-1.5-flash-latest gemini-1.5-pro-latest])
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
File without changes
@@ -0,0 +1,15 @@
1
+ require "base64"
2
+
3
+ require "sublayer"
4
+ require "octokit"
5
+
6
+ # Load all Sublayer Actions, Generators, and Agents
7
+ Dir[File.join(__dir__, "actions", "*.rb")].each { |file| require file }
8
+ Dir[File.join(__dir__, "generators", "*.rb")].each { |file| require file }
9
+ Dir[File.join(__dir__, "agents", "*.rb")].each { |file| require file }
10
+
11
+ Sublayer.configuration.ai_provider = Sublayer::Providers::<%= @ai_provider %>
12
+ Sublayer.configuration.ai_model = "<%= @ai_model %>"
13
+
14
+ # Add custom Github Action code below:
15
+
@@ -0,0 +1,30 @@
1
+ name: <%= project_name %>
2
+
3
+
4
+ # Add a definition of when you want this workflow to trigger here
5
+ #
6
+ # For example, for it to run on every pull request that contains changes to .rb files, use:
7
+ #
8
+ # on:
9
+ # pull_request:
10
+ # paths:
11
+ # - "**/*.rb"
12
+
13
+ jobs:
14
+ <%= project_name.gsub("-", "_") %>:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4.2.0
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: 3.2
22
+ - name: Install dependencies
23
+ run: |
24
+ gem install sublayer octokit
25
+ - name: Run <%= project_name.gsub("-", "_") %>
26
+ env:
27
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28
+ <%= ai_provider_key %>: ${{ secrets.<%= ai_provider_key %> }}
29
+
30
+ run: ruby .github/workflows/<%= project_name %>/<%= project_name %>.rb
data/lib/sublayer/cli.rb CHANGED
@@ -11,6 +11,9 @@ require_relative "cli/commands/new_project"
11
11
  require_relative "cli/commands/generator"
12
12
  require_relative "cli/commands/agent"
13
13
  require_relative "cli/commands/action"
14
+ require_relative "cli/commands/cli_project"
15
+ require_relative "cli/commands/github_action_project"
16
+ require_relative "cli/commands/quick_script_project"
14
17
 
15
18
  module Sublayer
16
19
  class CLI < Thor
@@ -40,6 +40,8 @@ module Sublayer
40
40
  after_request = Time.now
41
41
  response_time = after_request - before_request
42
42
 
43
+ raise "Error generating with Gemini, error: #{response.body}" unless response.success?
44
+
43
45
  Sublayer.configuration.logger.log(:info, "Gemini API response", {
44
46
  request_id: request_id,
45
47
  response_time: response_time,
@@ -50,8 +52,6 @@ module Sublayer
50
52
  }
51
53
  })
52
54
 
53
- raise "Error generating with Gemini, error: #{response.body}" unless response.success?
54
-
55
55
  output = response.dig("candidates", 0, "content", "parts", 0, "text")
56
56
 
57
57
  parsed_output = JSON.parse(output)[output_adapter.name]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sublayer
4
- VERSION = "0.2.7"
4
+ VERSION = "0.2.9"
5
5
  end
data/sublayer.gemspec CHANGED
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.add_dependency "zeitwerk"
38
38
  spec.add_dependency "httparty"
39
39
  spec.add_dependency "listen"
40
+ spec.add_dependency "ostruct"
40
41
  spec.add_dependency "thor"
41
42
 
42
43
  spec.add_development_dependency "rspec", "~> 3.12"
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sublayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Werner
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-09-24 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: ruby-openai
@@ -80,6 +79,20 @@ dependencies:
80
79
  - - ">="
81
80
  - !ruby/object:Gem::Version
82
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: ostruct
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
83
96
  - !ruby/object:Gem::Dependency
84
97
  name: thor
85
98
  requirement: !ruby/object:Gem::Requirement
@@ -159,6 +172,7 @@ executables:
159
172
  extensions: []
160
173
  extra_rdoc_files: []
161
174
  files:
175
+ - ".contextignore"
162
176
  - LICENSE
163
177
  - README.md
164
178
  - Rakefile
@@ -169,6 +183,7 @@ files:
169
183
  - lib/sublayer/cli.rb
170
184
  - lib/sublayer/cli/commands/action.rb
171
185
  - lib/sublayer/cli/commands/agent.rb
186
+ - lib/sublayer/cli/commands/cli_project.rb
172
187
  - lib/sublayer/cli/commands/generator.rb
173
188
  - lib/sublayer/cli/commands/generators/example_action_api_call.rb
174
189
  - lib/sublayer/cli/commands/generators/example_action_file_manipulation.rb
@@ -178,10 +193,12 @@ files:
178
193
  - lib/sublayer/cli/commands/generators/sublayer_agent_generator.rb
179
194
  - lib/sublayer/cli/commands/generators/sublayer_command_generator.rb
180
195
  - lib/sublayer/cli/commands/generators/sublayer_generator_generator.rb
196
+ - lib/sublayer/cli/commands/github_action_project.rb
181
197
  - lib/sublayer/cli/commands/new_project.rb
198
+ - lib/sublayer/cli/commands/quick_script_project.rb
182
199
  - lib/sublayer/cli/commands/subcommand_base.rb
183
200
  - lib/sublayer/cli/templates/cli/%project_name%.gemspec.tt
184
- - lib/sublayer/cli/templates/cli/.gitignore
201
+ - lib/sublayer/cli/templates/cli/.gitignore.tt
185
202
  - lib/sublayer/cli/templates/cli/Gemfile
186
203
  - lib/sublayer/cli/templates/cli/README.md.tt
187
204
  - lib/sublayer/cli/templates/cli/bin/%project_name%.tt
@@ -195,7 +212,13 @@ files:
195
212
  - lib/sublayer/cli/templates/cli/lib/%project_name%/config/.keep
196
213
  - lib/sublayer/cli/templates/cli/lib/%project_name%/generators/example_generator.rb.tt
197
214
  - lib/sublayer/cli/templates/cli/lib/%project_name%/version.rb.tt
215
+ - lib/sublayer/cli/templates/cli/log/.keep
198
216
  - lib/sublayer/cli/templates/cli/spec/.keep
217
+ - lib/sublayer/cli/templates/github_action/%project_name%.yml.tt
218
+ - lib/sublayer/cli/templates/github_action/%project_name%/%project_name%.rb.tt
219
+ - lib/sublayer/cli/templates/github_action/%project_name%/actions/.keep
220
+ - lib/sublayer/cli/templates/github_action/%project_name%/agents/.keep
221
+ - lib/sublayer/cli/templates/github_action/%project_name%/generators/.keep
199
222
  - lib/sublayer/cli/templates/quick_script/%project_name%.rb
200
223
  - lib/sublayer/cli/templates/quick_script/README.md.tt
201
224
  - lib/sublayer/cli/templates/quick_script/actions/example_action.rb
@@ -231,7 +254,6 @@ metadata:
231
254
  documentation_uri: https://docs.sublayer.com
232
255
  bug_tracker_uri: https://github.com/sublayerapp/sublayer/issues
233
256
  source_code_uri: https://github.com/sublayerapp/sublayer
234
- post_install_message:
235
257
  rdoc_options: []
236
258
  require_paths:
237
259
  - lib
@@ -246,8 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
268
  - !ruby/object:Gem::Version
247
269
  version: '0'
248
270
  requirements: []
249
- rubygems_version: 3.3.26
250
- signing_key:
271
+ rubygems_version: 3.6.9
251
272
  specification_version: 4
252
273
  summary: A model-agnostic Ruby GenerativeAI DSL and Framework
253
274
  test_files: []