understand 0.0.1 → 0.0.2

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/understand +61 -5
  3. data/lib/understand.rb +10 -12
  4. metadata +29 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cf96bc7bb590fd85ed5e7c0ee0f0732a0678bd841392ad8294c7153014bdaa5
4
- data.tar.gz: 52678bf6c6646f12a7740643623375d18f04d926a8332ebe9f6a9a7b03342ab0
3
+ metadata.gz: 252786af152482e56365f8e13b52340e2a48d3a9a8ef726657d75357c92891cc
4
+ data.tar.gz: 8a602e4f58a1320a166375289b7ba2332c4fc8f165ef24ba171602a6bbd4e3bf
5
5
  SHA512:
6
- metadata.gz: d0cf7721893fca0e554e16bb8d872527e42402b186f75ce4c6c00047677c640eb53b1ac8fd90577d2df55b19f1ffe8b3d7901e08c19796846a30c394b1359f22
7
- data.tar.gz: 6e0b3949a9dc3a1df9cd97251d3146b8de3952d0420f151e464d793c41f588117bcb3d457a12390fe1618c1609e3dcb81f0dd54cb5f1544ffa54bf4e4191502f
6
+ metadata.gz: e01bcc54fec5f2869272995d5c2a8f1f7c1de48f15452c2bb4347bc9e509a9abd275975a7a3b8d27ab70d033ffcaa91d6e60327accc9d1dc7b9a011296da73cd
7
+ data.tar.gz: b52894980c0a327294734be6e893c806f84af9f20a3b66da03afdc8ff3789b7c200bd0b36ff8f8b0edbc6056c40ccec744a8e6a6273d1ae3803047c42088a9da
data/bin/understand CHANGED
@@ -1,7 +1,63 @@
1
1
  require "understand"
2
- user_prompt = if ARGV[0]
3
- user_prompt
4
- else
5
- "Help me understand my application more."
2
+ require "bubbletea"
3
+ require "lipgloss"
4
+
5
+ class UnderstandCLI
6
+ include Bubbletea::Model
7
+ attr_accessor :ai_response_header, :ai_response
8
+ def initialize
9
+ @ai_response_header = "🔎 Understanding your codebase"
10
+ @ai_processing = false
11
+ @user_prompt = ""
12
+ @ai_response = ""
13
+ end
14
+
15
+ def init
16
+ [self, nil]
17
+ end
18
+
19
+ def update(message)
20
+ case message
21
+ when Bubbletea::KeyMessage
22
+ case message.to_s
23
+ when "enter"
24
+ if !@ai_processing && @user_prompt&.chars&.any?
25
+ @ai_processing = true
26
+ @user_prompt = ""
27
+ Understand.call(self)
28
+ [self, nil]
29
+ end
30
+ [self, nil]
31
+ when "esc", "ctrl+c"
32
+ [self, Bubbletea.quit]
33
+ when "backspace"
34
+ @user_prompt = @user_prompt[0..-2]
35
+ [self, nil]
36
+ when "space"
37
+ @user_prompt += " "
38
+ [self, nil]
39
+ else
40
+ @user_prompt += message.to_s
41
+ [self, nil]
42
+ end
43
+ end
44
+ end
45
+
46
+ def view
47
+ if @ai_processing
48
+ "#{@ai_response_header} \n \n AI: #{@ai_response}"
49
+ else
50
+ "💡 Understand your codebase now \n Enter your prompt: #{@user_prompt} \n\n (Press enter to submit)"
51
+ end
52
+ end
6
53
  end
7
- Understand.new(user_prompt).call
54
+
55
+ Bubbletea.run(UnderstandCLI.new)
56
+
57
+ # user_prompt = if ARGV[0]
58
+ # user_prompt
59
+ # else
60
+ # "Help me understand my application more."
61
+ # end
62
+
63
+ #Understand.new(user_prompt).call
data/lib/understand.rb CHANGED
@@ -1,21 +1,19 @@
1
1
  require "rllama"
2
2
 
3
3
  class Understand
4
- attr_reader :user_prompt
5
- def initialize(user_prompt)
6
- @user_prompt = user_prompt
7
- end
8
-
9
- def call
4
+ def self.call(understand_cli)
10
5
  model = Rllama.load_model('lmstudio-community/gemma-3-1B-it-QAT-GGUF/gemma-3-1B-it-QAT-Q4_0.gguf')
11
6
  files = Dir.glob("**/*").select { |f| File.file?(f) }
12
- files.each do |file|
13
- prompt_for_ai = user_prompt + "--- File path: #{file} Content: #{File.read(file)}"
14
- puts "💡 🔎 Understanding #{file}"
15
- result = model.generate(prompt_for_ai) do |token|
16
- print token
7
+ Thread.new do
8
+ files.each do |file|
9
+ prompt = "Help me understand my application"
10
+ prompt_for_ai = prompt + "--- File path: #{file} Content: #{File.read(file)}"
11
+ understand_cli.ai_response_header = "💡 🔎 Understanding #{file}"
12
+ model.generate(prompt_for_ai) do |token|
13
+ understand_cli.ai_response += token
14
+ end
17
15
  end
16
+ model.close
18
17
  end
19
- model.close
20
18
  end
21
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: understand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Indigo Tech
@@ -23,6 +23,34 @@ dependencies:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: 1.0.3
26
+ - !ruby/object:Gem::Dependency
27
+ name: bubbletea
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.1.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.1.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: lipgloss
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.2.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 0.2.0
26
54
  description: A gem to help you understand your codebases using the power of LLM's
27
55
  ( not a vibe coding tool )
28
56
  email: indigo@tech.tut