Commit 0363582

mo khan <mo@mokhan.ca>
2026-09-07 05:22:35
feat!: migrate to Elelem.configure
elelem core removed Elelem::Providers/Plugins in favor of a single Elelem::Config registered via Elelem.configure. Bump elelem dependency to ~> 0.11 to match. Claude-Session: https://claude.ai/code/session_01DUuj4amvRrPxDnHPHBkvz5
1 parent 56dfb82
Changed files (2)
lib/elelem/llama.rb
@@ -7,29 +7,31 @@ require "elelem"
 require_relative "llama/version"
 require_relative "llama/client"
 
-Elelem::Providers.register(:llama) do
-  gpu = %w[vulkan cuda metal].include?(Elelem::Llama::Client.backend)
+Elelem.configure do |config|
+  config.provider(:llama) do
+    gpu = %w[vulkan cuda metal].include?(Elelem::Llama::Client.backend)
 
-  default_model = -> {
-    dir = File.expand_path("~/.agents/models")
-    link = File.join(dir, "default.gguf")
-    return link if File.symlink?(link) || File.exist?(link)
+    default_model = -> {
+      dir = File.expand_path("~/.agents/models")
+      link = File.join(dir, "default.gguf")
+      return link if File.symlink?(link) || File.exist?(link)
 
-    models = Dir[File.join(dir, "*.gguf")].sort
-    case models.length
-    when 1 then models.first
-    when 0 then raise "no .gguf model found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf"
-    else raise "multiple .gguf models found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf or symlink #{link} to the one to use by default"
-    end
-  }
+      models = Dir[File.join(dir, "*.gguf")].sort
+      case models.length
+      when 1 then models.first
+      when 0 then raise "no .gguf model found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf"
+      else raise "multiple .gguf models found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf or symlink #{link} to the one to use by default"
+      end
+    }
 
-  Elelem::Llama::Client.new(
-    model: ENV.fetch("ELELEM_GGUF_MODEL") { default_model.call },
-    n_ctx: 0,
-    n_threads: 0,
-    n_gpu_layers: gpu ? 999 : 0,
-    max_tokens: Integer(ENV.fetch("ELELEM_GGUF_MAX_TOKENS", "0")),
-    temp: Float(ENV.fetch("ELELEM_GGUF_TEMP", "0.7")),
-    seed: Integer(ENV.fetch("ELELEM_GGUF_SEED", "-1"))
-  )
+    Elelem::Llama::Client.new(
+      model: ENV.fetch("ELELEM_GGUF_MODEL") { default_model.call },
+      n_ctx: 0,
+      n_threads: 0,
+      n_gpu_layers: gpu ? 999 : 0,
+      max_tokens: Integer(ENV.fetch("ELELEM_GGUF_MAX_TOKENS", "0")),
+      temp: Float(ENV.fetch("ELELEM_GGUF_TEMP", "0.7")),
+      seed: Integer(ENV.fetch("ELELEM_GGUF_SEED", "-1"))
+    )
+  end
 end
elelem-llama.gemspec
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
   spec.executables = ["elelem-llama"]
   spec.require_paths = ["lib"]
 
-  spec.add_dependency "elelem", "~> 0.10"
+  spec.add_dependency "elelem", "~> 0.11"
   spec.add_dependency "fiddle", "~> 1.1"
   spec.add_dependency "json", "~> 2.21"
 end