aia 0.0.4 → 0.3.0
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +115 -27
- data/bin/aia +2 -4
- data/lib/aia/cli.rb +179 -0
- data/lib/aia/configuration.rb +44 -0
- data/lib/aia/external/,keep +0 -0
- data/lib/aia/external/.irbrc +11 -0
- data/lib/aia/external/ag.rb +103 -0
- data/lib/aia/external/bat.rb +189 -0
- data/lib/aia/external/fzf.rb +147 -0
- data/lib/aia/external/glow.rb +37 -0
- data/lib/aia/external/mods.rb +57 -0
- data/lib/aia/external/rg.rb +1163 -0
- data/lib/aia/external/sgpt.rb +58 -0
- data/lib/aia/external/subl.rb +47 -0
- data/lib/aia/external/temp.md +37 -0
- data/lib/aia/external/tool.rb +73 -0
- data/lib/aia/external.rb +259 -0
- data/lib/aia/external_two.rb +43 -0
- data/lib/aia/logging.rb +22 -0
- data/lib/aia/main.rb +39 -0
- data/lib/aia/prompt_processing.rb +212 -0
- data/lib/aia/version.rb +2 -1
- data/lib/aia.rb +4 -381
- data/lib/modularization_plan.md +126 -0
- metadata +22 -2
@@ -0,0 +1,126 @@
|
|
1
|
+
## Suggested Refactoring into Modules
|
2
|
+
|
3
|
+
### ConfigurationModule
|
4
|
+
|
5
|
+
This module could encapsulate all the constants and environment-dependent settings.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
module Configuration
|
9
|
+
HOME = Pathname.new(ENV['HOME'])
|
10
|
+
PROMPTS_DIR = Pathname.new(ENV['PROMPTS_DIR'] || (HOME + ".prompts_dir"))
|
11
|
+
AI_CLI_PROGRAM = "mods"
|
12
|
+
EDITOR = ENV['EDITOR'] || 'edit'
|
13
|
+
MY_NAME = Pathname.new(__FILE__).basename.to_s.split('.')[0]
|
14
|
+
MODS_MODEL = ENV['MODS_MODEL'] || 'gpt-4-1106-preview'
|
15
|
+
OUTPUT = Pathname.pwd + "temp.md"
|
16
|
+
PROMPT_LOG = PROMPTS_DIR + "_prompts.log"
|
17
|
+
USAGE = <<~EOUSAGE
|
18
|
+
AI Assistant (aia)
|
19
|
+
==================
|
20
|
+
The AI cli program being used is: #{AI_CLI_PROGRAM}
|
21
|
+
You can pass additional CLI options to #{AI_CLI_PROGRAM} like this:
|
22
|
+
"#{MY_NAME} my options -- options for #{AI_CLI_PROGRAM}"
|
23
|
+
EOUSAGE
|
24
|
+
end
|
25
|
+
```
|
26
|
+
|
27
|
+
### OptionParsingModule
|
28
|
+
|
29
|
+
This module could manage the parsing of command-line arguments and configuring the options for the application.
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
module OptionParsing
|
33
|
+
def build_reader_methods
|
34
|
+
# ... method definition ...
|
35
|
+
end
|
36
|
+
|
37
|
+
def process_arguments
|
38
|
+
# ... method definition ...
|
39
|
+
end
|
40
|
+
|
41
|
+
def check_for(an_option)
|
42
|
+
# ... method definition ...
|
43
|
+
end
|
44
|
+
|
45
|
+
def process_option(option_sym, switches)
|
46
|
+
# ... method definition ...
|
47
|
+
end
|
48
|
+
end
|
49
|
+
```
|
50
|
+
|
51
|
+
### CommandLineInterfaceModule
|
52
|
+
|
53
|
+
This module would manage interactions with the command-line interface including editing of prompts and selection processes.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
module CommandLineInterface
|
57
|
+
def keyword_value(kw, default)
|
58
|
+
# ... method definition ...
|
59
|
+
end
|
60
|
+
|
61
|
+
def handle_multiple_prompts(found_these, while_looking_for_this)
|
62
|
+
# ... method definition ...
|
63
|
+
end
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
### LoggingModule
|
68
|
+
|
69
|
+
Responsible for logging the results of the command.
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
module Logging
|
73
|
+
def write_to_log(answer)
|
74
|
+
# ... method definition ...
|
75
|
+
end
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
79
|
+
### AICommandModule
|
80
|
+
|
81
|
+
Manages the building and execution of the AI CLI command.
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
module AICommand
|
85
|
+
def setup_cli_program
|
86
|
+
# ... method definition ...
|
87
|
+
end
|
88
|
+
|
89
|
+
def build_command
|
90
|
+
# ... method definition ...
|
91
|
+
end
|
92
|
+
|
93
|
+
def execute_and_log_command(command)
|
94
|
+
# ... method definition ...
|
95
|
+
end
|
96
|
+
end
|
97
|
+
```
|
98
|
+
|
99
|
+
### PromptProcessingModule
|
100
|
+
|
101
|
+
Handles prompt retrieval, existing check, and keyword processing.
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
module PromptProcessing
|
105
|
+
def existing_prompt?(prompt_id)
|
106
|
+
# ... method definition ...
|
107
|
+
end
|
108
|
+
|
109
|
+
def process_prompt
|
110
|
+
# ... method definition ...
|
111
|
+
end
|
112
|
+
|
113
|
+
def replace_keywords
|
114
|
+
# ... method definition ...
|
115
|
+
end
|
116
|
+
|
117
|
+
def search_for_a_matching_prompt(prompt_id)
|
118
|
+
# ... method definition ...
|
119
|
+
end
|
120
|
+
end
|
121
|
+
```
|
122
|
+
|
123
|
+
Each module should only contain the methods relevant to that module's purpose. After defining these modules, they can be included in the `AIA::Main` class where appropriate. Note that the method `get_prompt_id` didn't fit neatly into one of the outlined modules; it may remain in the main class or be included in a module if additional context becomes available or if it can be logically grouped with similar methods.
|
124
|
+
|
125
|
+
The `__END__` block and the Readline history management could be encapsulated into a separate module for terminal interactions if that block grows in complexity or moves out of the overall class definition.
|
126
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dewayne VanHoozer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: prompt_manager
|
@@ -103,8 +103,28 @@ files:
|
|
103
103
|
- bin/aia
|
104
104
|
- bin/aia_completion.sh
|
105
105
|
- lib/aia.rb
|
106
|
+
- lib/aia/cli.rb
|
107
|
+
- lib/aia/configuration.rb
|
108
|
+
- lib/aia/external.rb
|
109
|
+
- lib/aia/external/,keep
|
110
|
+
- lib/aia/external/.irbrc
|
111
|
+
- lib/aia/external/ag.rb
|
112
|
+
- lib/aia/external/bat.rb
|
113
|
+
- lib/aia/external/fzf.rb
|
114
|
+
- lib/aia/external/glow.rb
|
115
|
+
- lib/aia/external/mods.rb
|
116
|
+
- lib/aia/external/rg.rb
|
117
|
+
- lib/aia/external/sgpt.rb
|
118
|
+
- lib/aia/external/subl.rb
|
119
|
+
- lib/aia/external/temp.md
|
120
|
+
- lib/aia/external/tool.rb
|
121
|
+
- lib/aia/external_two.rb
|
122
|
+
- lib/aia/logging.rb
|
123
|
+
- lib/aia/main.rb
|
124
|
+
- lib/aia/prompt_processing.rb
|
106
125
|
- lib/aia/version.rb
|
107
126
|
- lib/core_ext/string_wrap.rb
|
127
|
+
- lib/modularization_plan.md
|
108
128
|
homepage: https://github.com/MadBomber/aia
|
109
129
|
licenses:
|
110
130
|
- MIT
|