Commit b3d2255
Changed files (5)
lib
elelem
builtins
lib/elelem/builtins/anthropic.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+Elelem::Providers.register(:anthropic) do
+ Elelem::Net::Claude.anthropic(
+ model: ENV.fetch("ANTHROPIC_MODEL", "claude-opus-4-5-20250514"),
+ api_key: ENV.fetch("ANTHROPIC_API_KEY")
+ )
+end
lib/elelem/builtins/ollama.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+Elelem::Providers.register(:ollama) do
+ Elelem::Net::Ollama.new(
+ model: ENV.fetch("OLLAMA_MODEL", "gpt-oss:latest"),
+ host: ENV.fetch("OLLAMA_HOST", "localhost:11434")
+ )
+end
lib/elelem/builtins/openai.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+Elelem::Providers.register(:openai) do
+ Elelem::Net::OpenAI.new(
+ model: ENV.fetch("OPENAI_MODEL", "gpt-4o"),
+ api_key: ENV.fetch("OPENAI_API_KEY")
+ )
+end
lib/elelem/builtins/provider.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+Elelem::Plugins.register(:provider) do |agent|
+ agent.commands.register("provider", description: "Switch provider", completions: -> { Elelem::Providers.names }) do |name|
+ if name.nil? || name.empty?
+ agent.terminal.say " → available: #{Elelem::Providers.names.join(", ")}"
+ else
+ agent.client = Elelem::Providers.build(name)
+ agent.terminal.say " → switched to #{name}"
+ end
+ end
+end
lib/elelem/builtins/vertex.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+Elelem::Providers.register(:vertex) do
+ Elelem::Net::Claude.vertex(
+ model: ENV.fetch("VERTEX_MODEL", "claude-opus-4-5@20251101"),
+ project: ENV.fetch("GOOGLE_CLOUD_PROJECT"),
+ region: ENV.fetch("GOOGLE_CLOUD_REGION", "us-east5")
+ )
+end