understand 0.0.0 → 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 -1
  3. data/lib/understand.rb +16 -2
  4. metadata +44 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86a05e2ff179cb908a9b5400b548a31c7fe64f4dce41ee60614107a2bcf15704
4
- data.tar.gz: e527daf41b0d24bbdb7763ae96b5f9dc50c891c278b42a61527a69e079b39dbf
3
+ metadata.gz: 252786af152482e56365f8e13b52340e2a48d3a9a8ef726657d75357c92891cc
4
+ data.tar.gz: 8a602e4f58a1320a166375289b7ba2332c4fc8f165ef24ba171602a6bbd4e3bf
5
5
  SHA512:
6
- metadata.gz: 9be5dd6701740e086942ce7da003c31b1285759782f8eb973198c187620e2d4a7534f5b6844556595cbcf71e664c3c388b2e0a56018da42360362b41f8bf8e80
7
- data.tar.gz: ac8b2a995a24ecbddab063c9c4b7af2a5568d6919bb575e039c50848bb12c7a46f86ae68d169e608577fec271876f89e725739dbbf008c3fd00906e95a0a9038
6
+ metadata.gz: e01bcc54fec5f2869272995d5c2a8f1f7c1de48f15452c2bb4347bc9e509a9abd275975a7a3b8d27ab70d033ffcaa91d6e60327accc9d1dc7b9a011296da73cd
7
+ data.tar.gz: b52894980c0a327294734be6e893c806f84af9f20a3b66da03afdc8ff3789b7c200bd0b36ff8f8b0edbc6056c40ccec744a8e6a6273d1ae3803047c42088a9da
data/bin/understand CHANGED
@@ -1,3 +1,63 @@
1
1
  require "understand"
2
+ require "bubbletea"
3
+ require "lipgloss"
2
4
 
3
- Understand.hello
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
53
+ end
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,5 +1,19 @@
1
+ require "rllama"
2
+
1
3
  class Understand
2
- def self.hello
3
- puts 'Hello world'
4
+ def self.call(understand_cli)
5
+ model = Rllama.load_model('lmstudio-community/gemma-3-1B-it-QAT-GGUF/gemma-3-1B-it-QAT-Q4_0.gguf')
6
+ files = Dir.glob("**/*").select { |f| File.file?(f) }
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
15
+ end
16
+ model.close
17
+ end
4
18
  end
5
19
  end
metadata CHANGED
@@ -1,14 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: understand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Indigo Tech
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rllama
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 1.0.3
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
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
12
54
  description: A gem to help you understand your codebases using the power of LLM's
13
55
  ( not a vibe coding tool )
14
56
  email: indigo@tech.tut