13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/aicli/prompt.rb', line 13
def run(use_prompt: nil, silent_mode: false)
init_i18n
config = Helpers::Config.get
skip_explanation = silent_mode || config['SILENT_MODE']
pastel = Pastel.new
puts ''
puts pastel.cyan(Helpers::Constants::PROJECT_NAME)
puts pastel.dim("#{config['PROVIDER']} / #{config['MODEL']}")
the_prompt = use_prompt.nil? || use_prompt.strip.empty? ? ask_prompt : use_prompt
spinner = TTY::Spinner.new("[:spinner] #{Helpers::I18n.t('Loading...')}", format: :dots)
spinner.auto_spin
result = Helpers::Completion.get_script_and_info(
prompt: the_prompt,
config: config
)
spinner.success(Helpers::I18n.t('Your script') + ':')
puts ''
script = result[:read_script].call(->(chunk) { print chunk })
puts ''
puts ''
explanation_text = ''
unless skip_explanation
spinner = TTY::Spinner.new("[:spinner] #{Helpers::I18n.t('Getting explanation...')}", format: :dots)
spinner.auto_spin
info = result[:read_info].call(->(chunk) { print chunk })
if info.nil? || info.empty?
explanation = Helpers::Completion.get_explanation(
script: script,
config: config
)
spinner.success(Helpers::I18n.t('Explanation') + ':')
puts ''
explanation_text = explanation[:read_explanation].call(->(chunk) { print chunk })
puts ''
puts ''
else
explanation_text = info
spinner.success(Helpers::I18n.t('Explanation') + ':')
end
end
append_prompt_context(the_prompt, script, explanation_text)
run_or_revise_flow(script, config, silent_mode)
end
|