elelem-builtins 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9add550f4e090bdfedad12f0ace36276ab00db2f2c1c1af51d0dd2c2dfaef8c
4
- data.tar.gz: 3e1dc2c8c59c56b273161578ac5628fdfac317f2a0cbca3566ea878255d4610a
3
+ metadata.gz: e41b181eba92f72b2bd456b40fa08d62e39844add98ad8c8ef127959ad37d212
4
+ data.tar.gz: f0de0ea1d06238b2379d502f6a6b42869142d03b93143ea59f5799d03525b8d2
5
5
  SHA512:
6
- metadata.gz: '08a66e554544c36454bdc6f99e0987ddbda1072a4216acd9b34a3b9201cd73c204a40504e6e0ceef8c37bafca13086530ac5213116954b5268b334f362d376f2'
7
- data.tar.gz: 8cae217a61971f7f9b572ee88e58969b2b1cdfd2b6020dd03f0192406059350556649498823be467f874cf5535be2579f393d01d23151f714c1ae645297884e1
6
+ metadata.gz: f46bcf9ea4515f51c3a16877b6fb72ae6bd4d5d91f4e17fbab5057be7b5815024fee8cea173289fd13feae05e7a9667767cef3bf353208bb962c6b829e624864
7
+ data.tar.gz: 81482b6d740f673b1a35d6ca3eeaaac33f3f432dcc7bd8fe8b81a9324abb89ff875eeb08e70635044ede15052d04b880ddc8616bfce790fc20cc2083e886bdef
@@ -6,7 +6,7 @@ Elelem.configure do |config|
6
6
  if name.nil? || name.empty?
7
7
  agent.output.say " → available: #{Elelem::Config.names.join(", ")}"
8
8
  else
9
- agent.client = Elelem::Config.build_client(name)
9
+ agent.provider = Elelem::Config.build_provider(name)
10
10
  agent.output.say " → switched to #{name}"
11
11
  end
12
12
  end
@@ -2,7 +2,50 @@
2
2
 
3
3
  module Elelem
4
4
  module Builtins
5
- class Terminal < Elelem::Terminal
5
+ class Terminal
6
+ def initialize(stream: $stdout, **)
7
+ @stream = stream
8
+ @dots_thread = nil
9
+ @at_line_start = true
10
+ end
11
+
12
+ def say(text, as: nil)
13
+ stop_dots
14
+ return if blank?(text)
15
+
16
+ text = render(text, as) if as
17
+ write "#{text}\n"
18
+ @at_line_start = true
19
+ end
20
+
21
+ def print(text)
22
+ stop_dots
23
+ return if blank?(text)
24
+
25
+ write text
26
+ @at_line_start = false
27
+ end
28
+
29
+ def thinking(text)
30
+ print("\e[2;3m#{text}\e[0m") unless blank?(text)
31
+ end
32
+
33
+ def doing(name, args, state: "+")
34
+ gap
35
+ say "#{state} \e[36m#{name}\e[0m(#{args})"
36
+ end
37
+
38
+ def waiting
39
+ stop_dots
40
+ @dots_thread = Thread.new do
41
+ until Thread.current[:stop]
42
+ @stream.print "."
43
+ @stream.flush
44
+ sleep 0.1
45
+ end
46
+ end
47
+ end
48
+
6
49
  def display_file(path, fallback: nil)
7
50
  system("bat", "--paging=never", path) || say(fallback || path)
8
51
  end
@@ -10,7 +53,8 @@ module Elelem
10
53
  private
11
54
 
12
55
  def render(text, as)
13
- return super unless as == :markdown
56
+ return "\n ✗ #{text}" if as == :error
57
+ return text unless as == :markdown
14
58
 
15
59
  gap
16
60
  width = @stream.winsize[1] rescue 80
@@ -23,8 +67,24 @@ module Elelem
23
67
  text
24
68
  end
25
69
 
70
+ def gap
71
+ stop_dots
72
+ write("\n") unless @at_line_start
73
+ @at_line_start = true
74
+ end
75
+
76
+ def stop_dots
77
+ return unless @dots_thread
78
+
79
+ @dots_thread[:stop] = true
80
+ @dots_thread.join
81
+ @dots_thread = nil
82
+ write("\n")
83
+ @at_line_start = true
84
+ end
85
+
26
86
  def write(text)
27
- super
87
+ @stream.print text
28
88
  (@transcript ||= open_transcript).print text
29
89
  end
30
90
 
@@ -34,6 +94,10 @@ module Elelem
34
94
  session_id = "#{Time.now.utc.strftime("%Y%m%dT%H%M%SZ")}-#{Process.pid}"
35
95
  File.open(File.join(state_dir, "#{session_id}.transcript"), "a").tap { |f| f.sync = true }
36
96
  end
97
+
98
+ def blank?(text)
99
+ text.nil? || text.to_s.strip.empty?
100
+ end
37
101
  end
38
102
  end
39
103
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Elelem
4
4
  module Builtins
5
- VERSION = "0.2.0"
5
+ VERSION = "0.3.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elelem-builtins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo khan
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.13'
18
+ version: '0.11'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.13'
25
+ version: '0.11'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: fileutils
28
28
  requirement: !ruby/object:Gem::Requirement