Commit 4b1e942
Changed files (1)
lib
elelem
builtins
lib/elelem/builtins/builtins.rb
@@ -34,16 +34,22 @@ Elelem::Plugins.register(:builtins) do |agent|
end
end
+ strip_ansi = ->(text) do
+ text
+ .gsub(/^Script started.*?\n/, "")
+ .gsub(/\nScript done.*$/, "")
+ .gsub(/\e\].*?(?:\a|\e\\)/, "")
+ .gsub(/\e\[[0-9;?]*[A-Za-z]/, "")
+ .gsub(/\e[PX^_].*?\e\\/, "")
+ .gsub(/\e./, "")
+ .gsub(/[\b]/, "")
+ .gsub(/\r/, "")
+ end
+
agent.commands.register("shell", description: "Start interactive shell") do
transcript = Tempfile.create do |file|
system("script", "-q", file.path, chdir: Dir.pwd)
- File.read(file.path)
- .gsub(/^Script started.*?\n/, "")
- .gsub(/\nScript done.*$/, "")
- .gsub(/\e\[[0-9;]*[a-zA-Z]/, "")
- .gsub(/\e\[\?[0-9]+[hl]/, "")
- .gsub(/[\b]/, "")
- .gsub(/\r/, "")
+ strip_ansi.call(File.read(file.path))
end
agent.conversation.add(role: "user", content: transcript) unless transcript.strip.empty?
end