Commit aec792c

mo khan <mo@mokhan.ca>
2026-09-07 04:45:59
refactor: replace Agent#fork with Elelem::Tools.fork
Agent#fork was only ever called from init/task, so it moves out of elelem core (which is removing it) into a plain helper built from Agent's public client/toolbox/terminal accessors. Bumps the elelem dependency to ~> 0.11 to match. Claude-Session: https://claude.ai/code/session_01DUuj4amvRrPxDnHPHBkvz5
1 parent 9a2cb59
lib/elelem/tools/fork.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+module Elelem
+  module Tools
+    def self.fork(agent, system_prompt:)
+      Elelem::Agent.new(agent.client, toolbox: agent.toolbox, terminal: agent.terminal, system_prompt: system_prompt)
+    end
+  end
+end
lib/elelem/tools/init.rb
@@ -24,6 +24,6 @@ Elelem::Plugins.register(:init) do |agent|
       Keep it minimal. No fluff.
     PROMPT
 
-    agent.fork(system_prompt: system_prompt).turn("Generate AGENTS.md for this project")
+    Elelem::Tools.fork(agent, system_prompt: system_prompt).turn("Generate AGENTS.md for this project")
   end
 end
lib/elelem/tools/task.rb
@@ -6,7 +6,7 @@ Elelem::Plugins.register(:task) do |agent|
     params: { prompt: { type: "string" } },
     required: ["prompt"]
   ) do |args|
-    sub = agent.fork(system_prompt: "Research agent. Search, analyze, report. Be concise.")
+    sub = Elelem::Tools.fork(agent, system_prompt: "Research agent. Search, analyze, report. Be concise.")
     sub.turn(args["prompt"])
     { result: sub.conversation.last[:content] }
   end
lib/elelem/tools.rb
@@ -9,6 +9,7 @@ require_relative "tools/compact"
 require_relative "tools/confirm"
 require_relative "tools/edit"
 require_relative "tools/eval"
+require_relative "tools/fork"
 require_relative "tools/git"
 require_relative "tools/glob"
 require_relative "tools/grep"
elelem-tools.gemspec
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
   end
   spec.require_paths = ["lib"]
 
-  spec.add_dependency "elelem", "~> 0.10"
+  spec.add_dependency "elelem", "~> 0.11"
   spec.add_dependency "pathname", "~> 0.5"
   spec.add_dependency "tempfile", "~> 0.3"
 end