Commit 94bcc6c

mo khan <mo@mokhan.ca>
2026-09-13 04:45:23
refactor: rename fork's system_prompt: to template:
elelem 0.13.0 splits Agent's system_prompt: (now role text prepended to the rendered prompt) from template: (the full ERB override this gem was actually using). No behavior change here.
1 parent ee54490
lib/elelem/tools/fork.rb
@@ -2,8 +2,8 @@
 
 module Elelem
   module Tools
-    def self.fork(agent, system_prompt:)
-      Elelem::Agent.new(agent.provider, toolbox: agent.toolbox, output: agent.output, input: agent.input, system_prompt: system_prompt)
+    def self.fork(agent, template:)
+      Elelem::Agent.new(agent.provider, toolbox: agent.toolbox, output: agent.output, template: template)
     end
   end
 end
lib/elelem/tools/init.rb
@@ -3,7 +3,7 @@
 Elelem.configure do |config|
   config.setup(:init) do |agent|
     agent.commands.register("init", description: "Generate AGENTS.md") do
-      system_prompt = <<~PROMPT
+      template = <<~PROMPT
         AGENTS.md generator. Analyze codebase and write AGENTS.md to project root.
 
         # AGENTS.md Spec (https://agents.md/)
@@ -25,7 +25,7 @@ Elelem.configure do |config|
         Keep it minimal. No fluff.
       PROMPT
 
-      Elelem::Tools.fork(agent, system_prompt: system_prompt).turn("Generate AGENTS.md for this project")
+      Elelem::Tools.fork(agent, template: template).turn("Generate AGENTS.md for this project")
     end
   end
 end
lib/elelem/tools/task.rb
@@ -6,7 +6,7 @@ Elelem.configure do |config|
                       description: "Delegate subtask to focused agent (complex searches, multi-file analysis)",
                       params: { prompt: { type: "string" } },
                       required: ["prompt"]) do |args|
-      sub = Elelem::Tools.fork(agent, system_prompt: "Research agent. Search, analyze, report. Be concise.")
+      sub = Elelem::Tools.fork(agent, template: "Research agent. Search, analyze, report. Be concise.")
       sub.turn(args["prompt"])
       { result: sub.conversation.last[:content] }
     end
elelem-tools.gemspec
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
   end
   spec.require_paths = ["lib"]
 
-  spec.add_dependency "elelem", "~> 0.12"
+  spec.add_dependency "elelem", "~> 0.13"
   spec.add_dependency "elelem-builtins", "~> 0.1"
   spec.add_dependency "json", "~> 3.0"
   spec.add_dependency "pathname", "~> 0.5"
Gemfile.lock
@@ -2,7 +2,7 @@ PATH
   remote: .
   specs:
     elelem-tools (0.2.0)
-      elelem (~> 0.12)
+      elelem (~> 0.13)
       elelem-builtins (~> 0.1)
       json (~> 3.0)
       pathname (~> 0.5)
@@ -14,7 +14,7 @@ GEM
     ast (2.4.3)
     bigdecimal (4.1.2)
     diff-lcs (1.6.2)
-    elelem (0.12.0)
+    elelem (0.13.0)
       erb (~> 6.0)
       forwardable (~> 1.4)
       io-console (~> 0.9)
@@ -133,7 +133,7 @@ CHECKSUMS
   bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
   bundler (4.0.20) sha256=7978a8ac648767f5e635bc522445b79e80a52b907a39a36c2d8085ed6bc762ae
   diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
-  elelem (0.12.0) sha256=dd779834b48a127fac27e01b56ee8add14979ca738aa348b5f2e28fcb6857581
+  elelem (0.13.0)
   elelem-builtins (0.3.1) sha256=32d066baaa706896f5aa276d01b17aa38f4e822d0ca43636ed45e7cdc00f008c
   elelem-tools (0.2.0)
   erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92