Comparing changes

v0.1.0 v0.2.0
5 commits 5 files changed

Commits

2c79ca8 chore: update Gemfile.lock mo khan 2026-09-08 00:30:07
2f7154e bump to 0.2.0 mo khan 2026-09-08 00:22:30
b50c2c3 upgrade json dependency to ~> 3.0 mo khan 2026-09-07 20:52:44
8e6a490 feat!: migrate to Elelem.configure mo khan 2026-09-07 05:22:46
lib/elelem/openai/client.rb → lib/elelem/openai/provider.rb
@@ -2,7 +2,7 @@
 
 module Elelem
   module OpenAI
-    class Client
+    class Provider
       def initialize(model:, api_key:, base_url: "https://api.openai.com/v1", read_timeout: 3600, open_timeout: 10)
         @uri = URI.join("#{base_url}/", "chat/completions")
         @model = model
lib/elelem/openai/version.rb
@@ -2,6 +2,6 @@
 
 module Elelem
   module OpenAI
-    VERSION = "0.1.0"
+    VERSION = "0.2.0"
   end
 end
lib/elelem/openai.rb
@@ -6,11 +6,13 @@ require "net/http"
 require "uri"
 
 require_relative "openai/version"
-require_relative "openai/client"
+require_relative "openai/provider"
 
-Elelem::Providers.register(:openai) do
-  Elelem::OpenAI::Client.new(
-    model: ENV.fetch("OPENAI_MODEL", "gpt-4o"),
-    api_key: ENV.fetch("OPENAI_API_KEY")
-  )
+Elelem.configure do |config|
+  config.provider(:openai) do
+    Elelem::OpenAI::Provider.new(
+      model: ENV.fetch("OPENAI_MODEL", "gpt-4o"),
+      api_key: ENV.fetch("OPENAI_API_KEY")
+    )
+  end
 end
elelem-openai.gemspec
@@ -27,8 +27,8 @@ Gem::Specification.new do |spec|
   spec.executables = ["elelem-openai"]
   spec.require_paths = ["lib"]
 
-  spec.add_dependency "elelem", "~> 0.10"
-  spec.add_dependency "json", "~> 2.21"
+  spec.add_dependency "elelem", "~> 0.11"
+  spec.add_dependency "json", "~> 3.0"
   spec.add_dependency "net-http", "~> 0.9"
   spec.add_dependency "uri", "~> 1.1"
 end
Gemfile.lock
@@ -0,0 +1,110 @@
+PATH
+  remote: .
+  specs:
+    elelem-openai (0.2.0)
+      elelem (~> 0.11)
+      json (~> 3.0)
+      net-http (~> 0.9)
+      uri (~> 1.1)
+
+GEM
+  remote: https://rubygems.org/
+  specs:
+    bigdecimal (4.1.2)
+    elelem (0.11.0)
+      erb (~> 6.0)
+      forwardable (~> 1.4)
+      io-console (~> 0.9)
+      json (~> 3.0)
+      json_schemer (~> 2.5)
+      logger (~> 1.7)
+      open3 (~> 0.2)
+      optparse (~> 0.8)
+      pathname (~> 0.5)
+      reline (~> 0.7)
+      shellwords (~> 0.2)
+      uri (~> 1.0)
+    erb (6.0.7)
+    forwardable (1.4.0)
+    hana (1.3.7)
+    io-console (0.9.2)
+    irb (1.18.0)
+      pp (>= 0.6.0)
+      prism (>= 1.3.0)
+      rdoc (>= 4.0.0)
+      reline (>= 0.4.2)
+    json (3.0.0)
+    json_schemer (2.5.0)
+      bigdecimal
+      hana (~> 1.3)
+      regexp_parser (~> 2.0)
+      simpleidn (~> 0.2)
+    logger (1.7.0)
+    net-http (0.9.1)
+      uri (>= 0.11.1)
+    open3 (0.2.1)
+    optparse (0.8.1)
+    pathname (0.5.0)
+    pp (0.6.4)
+      prettyprint
+    prettyprint (0.2.0)
+    prism (1.9.0)
+    rake (13.4.2)
+    rbs (4.2.0)
+      logger
+      prism (>= 1.6.0)
+      tsort
+    rdoc (8.0.0)
+      erb
+      prism (>= 1.6.0)
+      rbs (>= 4.0.0)
+      tsort
+    regexp_parser (2.12.0)
+    reline (0.7.0)
+      io-console (~> 0.5)
+    shellwords (0.2.2)
+    simpleidn (0.3.0)
+    tsort (0.2.0)
+    uri (1.1.1)
+
+PLATFORMS
+  ruby
+  x86_64-linux
+
+DEPENDENCIES
+  elelem-openai!
+  irb
+  rake (~> 13.0)
+
+CHECKSUMS
+  bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
+  bundler (4.0.20) sha256=7978a8ac648767f5e635bc522445b79e80a52b907a39a36c2d8085ed6bc762ae
+  elelem (0.11.0) sha256=552cafb092320e3896b8e07572d322fe2b94f0f10d965bf7b993b74517a6f744
+  elelem-openai (0.2.0)
+  erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92
+  forwardable (1.4.0) sha256=f1cd40cc9812937980e1c76f1aa053660990a7c9b6a98fc37d945468afcce838
+  hana (1.3.7) sha256=5425db42d651fea08859811c29d20446f16af196308162894db208cac5ce9b0d
+  io-console (0.9.2) sha256=efa74f891dd03c0939a931dfc6e74c2813d904763d456ea9762b0525e748db08
+  irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
+  json (3.0.0) sha256=1ff82a28c05c5cc7b646f3e3a3ac710e4ae2aa933690cba12f1f650b0ecdeb99
+  json_schemer (2.5.0) sha256=2f01fb4cce721a4e08dd068fc2030cffd0702a7f333f1ea2be6e8991f00ae396
+  logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
+  net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
+  open3 (0.2.1) sha256=8e2d7d2113526351201438c1aa35c8139f0141c9e8913baa007c898973bf3952
+  optparse (0.8.1) sha256=42bea10d53907ccff4f080a69991441d611fbf8733b60ed1ce9ee365ce03bd1a
+  pathname (0.5.0) sha256=d5a331784f6e1f2fefb31c2ff0b8855aabfb661d807284ead9fa47b883d81623
+  pp (0.6.4) sha256=dfcb0fce700c41456265922884f9fe195d7fbb0674a3578e6c0f69588e82b570
+  prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
+  prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
+  rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
+  rbs (4.2.0) sha256=51f7b886dcc05bc09e10b901daa6a81829f6adc03101d6ca9ea4aac6103e0674
+  rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469
+  regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
+  reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d
+  shellwords (0.2.2) sha256=b8695a791de2f71472de5abdc3f4332f6535a4177f55d8f99e7e44266cd32f94
+  simpleidn (0.3.0) sha256=12ca730bed2f3db04d11e9bfd1bca3e11fb37f55b21eb2e9793fb5814bf54d03
+  tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
+  uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
+
+BUNDLED WITH
+  4.0.20