aigcm 0.3.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a5fa862b115a855444f79940d5de35b98fe28b833d7f48974879ebc441a3f8f
4
- data.tar.gz: 61773de06d7776ae2caeeb85e69a65f85c969125cf326fdb5ec69422fa138296
3
+ metadata.gz: 2cc53c8ffef5c597adb196deffc67ad3c0f89d5a47e9bcbfc617ece6f6a73600
4
+ data.tar.gz: 6262260bc17b80ef51b668e19a7014c8e9cd4429f22f2654b8682303fb79ea39
5
5
  SHA512:
6
- metadata.gz: dcb6a39095d7c6eb9382c4fe6a74040aa7d0bf7b265345a57244650657dd60dd9672bc7d74bcfe3f4e5083b4dfd8a4ddce5ebef04bf205d354f4354ae0677a25
7
- data.tar.gz: 7b906da5bb75a7340e69701d997e02f6a8aad8494cfe5f145126120864592693eaab91b36051829f8dd0cbb0e454689140fe8b4c94af0e48b0cffa188f514bfe
6
+ metadata.gz: c5b256a8478183fd3bd53188916e36f2e48639927251ea128111f28baf0dc42910ba7104f95d9a8fd98f6f2df804ea9403eb6c8c1f179b22b1f1675979ed2e15
7
+ data.tar.gz: 063a9e30564ad0b791ea9707e2e57c333d9372330e4784cc4858431725ac6f0184ffa6a331cdb8651d97e50fe2d0a4e363a83cea7d96e9577251c30761069055
@@ -1,7 +1,7 @@
1
1
  require "net/http"
2
2
  require "json"
3
3
  require "open3"
4
- require "ai_client"
4
+ require "ruby_llm"
5
5
 
6
6
  module Aigcm
7
7
  class CommitMessageGenerator
@@ -15,10 +15,11 @@ module Aigcm
15
15
  @max_tokens = max_tokens
16
16
  @force_external = force_external
17
17
  @amend = amend
18
- validate_model_provider_combination
18
+ infer_provider_from_model
19
19
  check_provider_availability
20
20
 
21
- @client = AiClient.new(@model, provider: @provider)
21
+ configure_ruby_llm
22
+ @chat = RubyLLM.chat(model: @model)
22
23
  rescue StandardError => e
23
24
  raise Error, "Failed to initialize AI client: #{e.message}"
24
25
  end
@@ -38,8 +39,8 @@ module Aigcm
38
39
  prompt = build_prompt(diff, style_guide, processed_context)
39
40
 
40
41
  begin
41
- response = @client.chat(prompt)
42
- response.to_s.strip
42
+ response = @chat.ask(prompt)
43
+ response.content.strip
43
44
  rescue StandardError => e
44
45
  "Error generating commit message: #{e.message}"
45
46
  end
@@ -47,11 +48,40 @@ module Aigcm
47
48
 
48
49
  private
49
50
 
50
- def validate_model_provider_combination
51
- client = AiClient.new(@model)
52
- @provider ||= client.provider
53
- rescue ArgumentError => e
54
- raise Error, "Invalid model/provider combination: #{e.message}"
51
+ def infer_provider_from_model
52
+ return if @provider
53
+
54
+ model_lower = @model.to_s.downcase
55
+ @provider = if model_lower.include?('gpt') || model_lower.include?('o1') || model_lower.include?('o3')
56
+ :openai
57
+ elsif model_lower.include?('claude')
58
+ :anthropic
59
+ elsif model_lower.include?('gemini')
60
+ :google
61
+ elsif model_lower.include?('mistral') || model_lower.include?('mixtral')
62
+ :mistral
63
+ elsif model_lower.include?('llama') || model_lower.include?('qwen') || model_lower.include?('deepseek')
64
+ :ollama
65
+ else
66
+ :openai
67
+ end
68
+ end
69
+
70
+ def configure_ruby_llm
71
+ RubyLLM.configure do |config|
72
+ case @provider
73
+ when :ollama
74
+ config.ollama_api_base = 'http://localhost:11434/v1'
75
+ when :openai
76
+ config.openai_api_key = ENV.fetch('OPENAI_API_KEY', nil)
77
+ when :anthropic
78
+ config.anthropic_api_key = ENV.fetch('ANTHROPIC_API_KEY', nil)
79
+ when :google
80
+ config.gemini_api_key = ENV.fetch('GEMINI_API_KEY', nil)
81
+ when :mistral
82
+ config.mistral_api_key = ENV.fetch('MISTRAL_API_KEY', nil)
83
+ end
84
+ end
55
85
  end
56
86
 
57
87
  def check_provider_availability
data/lib/aigcm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aigcm
4
- VERSION = "0.3.0"
4
+ VERSION = "0.3.1"
5
5
  end
data/lib/aigcm.rb CHANGED
@@ -2,7 +2,7 @@ require 'debug_me'
2
2
  include DebugMe
3
3
 
4
4
  require 'optparse'
5
- require 'ai_client'
5
+ require 'ruby_llm'
6
6
  require 'time'
7
7
 
8
8
  require_relative 'aigcm/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aigcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
@@ -10,19 +10,19 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: ai_client
13
+ name: ruby_llm
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.4.0
18
+ version: '0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.4.0
25
+ version: '0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: minitest
28
28
  requirement: !ruby/object:Gem::Requirement