luo 0.2.1 → 0.2.3

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: b6fd7dfc689ad963f3f3e8c9f394242ca4aac334eccfe17ac0945397911a55b1
4
- data.tar.gz: 4b0ddf9adeb237187ab8dc44c152502f1e0831b1b4ad9ea44aef880672de008f
3
+ metadata.gz: 12b18554758f8e56d6ed51c06479d5a7adb5307281ba070f55bbf7b8aeff7f39
4
+ data.tar.gz: e60117cc08d28b7e0be2e256bba326b727ef823e3cc050cadcf71bc2aa85b5ca
5
5
  SHA512:
6
- metadata.gz: 90121e2c75de091278163ef0914cea6bb2c1d32683b3b7dec5b4a487e7a9b4fe1eb3a38f615dfceb4cde71b0727fd3e46679fa6688ddb8ef2f47b8ca278f9886
7
- data.tar.gz: 75ebe8f70681cc926bfcab440b1b5d25c2c2f20dd180c66022df540f2459eab83989011e2c020208297921ff801c025e335b4036179472865653bbbb56b6a369
6
+ metadata.gz: ce08dc5d0136f7eff5939601544608caa4c5d8b06ba170fd56df3c69f393a96f6ea925254eb06f1cae545b3b2ed82367dedc5fbbc21d2c37e691c3f331507097
7
+ data.tar.gz: 203eb46cb4602bcbeaa985981322a95d682bff93c5f9382f38ba96af425233e31f7f8981f3d3e509543ef224d7916a63c6711d8e1c28a2800c065c06a72db75b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- luo (0.2.1)
4
+ luo (0.2.3)
5
5
  dotenv (~> 2.8, >= 2.8.1)
6
6
  dry-configurable (~> 1.0, >= 1.0.1)
7
7
  dry-schema (~> 1.13, >= 1.13.1)
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Luo
4
+ module ErrorHandle
5
+ def raise(err, *args)
6
+ Luo::ErrorHandle.gpt_error_analyze(err)
7
+ super
8
+ end
9
+
10
+ def fail(*args)
11
+ raise(*args)
12
+ end
13
+
14
+ def gpt_error_analyze(error)
15
+ if error
16
+ error_message = error.message
17
+ backtrace = error.backtrace
18
+
19
+ context = {
20
+ message: error_message,
21
+ backtrace: backtrace
22
+ }
23
+ Helpers.display_md(" **你的代码出错了!正在使用 ChatGPT 分析错误原因,请稍后 ... **")
24
+
25
+ messages = Messages.create
26
+ .system(text: "你是一个ruby专家,根据用户的输入,你需要分析出错误的原因,然后给出解决方案。")
27
+ .user(prompt: Prompts.luo_error_analyze, context: context)
28
+ response = OpenAI.new.chat(messages)
29
+
30
+ Helpers.display_md(response)
31
+ puts "\n"
32
+ end
33
+ end
34
+ end
35
+ end
data/lib/luo/helpers.rb CHANGED
@@ -20,16 +20,7 @@ module Luo
20
20
  end
21
21
 
22
22
  def display_md(text)
23
- unless gem_exists?('iruby')
24
- raise "Please install iruby gem first."
25
- end
26
-
27
- if gem_exists?('rouge')
28
- renderer = HTMLwithRouge.new
29
- else
30
- renderer = Redcarpet::Render::HTML.new
31
- end
32
-
23
+ renderer = HTMLwithRouge.new
33
24
  markdown = Redcarpet::Markdown.new(renderer,
34
25
  autolink: true,
35
26
  tables: true,
data/lib/luo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Luo
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.3"
5
5
  end
data/lib/luo.rb CHANGED
@@ -41,6 +41,8 @@ module Luo
41
41
 
42
42
  def self.notebook_setup(&block)
43
43
  TOPLEVEL_BINDING.eval('include Luo')
44
+ Object.prepend Luo::ErrorHandle if ENV['LUO_ENV'] == 'debug'
45
+
44
46
  block.call(Loader) if block_given?
45
47
  Loader.setup
46
48
  if Helpers.gem_exists?('pry')
@@ -0,0 +1,9 @@
1
+ error message:
2
+ ```
3
+ <%= message %>
4
+ ```
5
+
6
+ error backtrace
7
+ ```
8
+ <%= backtrace %>
9
+ ```
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - MJ
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-24 00:00:00.000000000 Z
11
+ date: 2023-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -233,9 +233,9 @@ files:
233
233
  - lib/luo/cli/init_base.rb
234
234
  - lib/luo/cli/init_notebook.rb
235
235
  - lib/luo/configurable.rb
236
+ - lib/luo/error_handle.rb
236
237
  - lib/luo/helpers.rb
237
238
  - lib/luo/http_client.rb
238
- - lib/luo/init_project._rb
239
239
  - lib/luo/loader.rb
240
240
  - lib/luo/marqo.rb
241
241
  - lib/luo/memory_history.rb
@@ -269,7 +269,7 @@ files:
269
269
  - sig/luo/prompts.rbs
270
270
  - sig/luo/xinghuo.rbs
271
271
  - templates/AppGemfile
272
- - templates/NoteBookGemfile
272
+ - templates/NotebookGemfile
273
273
  - templates/application.rb
274
274
  - templates/env
275
275
  - templates/init.rb
@@ -279,6 +279,7 @@ files:
279
279
  - templates/prompts/agent_tool_input.md.erb
280
280
  - templates/prompts/luo_commit.md.erb
281
281
  - templates/prompts/luo_error.md.erb
282
+ - templates/prompts/luo_error_analyze.md.erb
282
283
  - templates/prompts/xinghuo_agent_input.md.erb
283
284
  - templates/prompts/xinghuo_response_error.md.erb
284
285
  - templates/test.yml
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Luo
4
- module InitProject
5
- extend self
6
-
7
- def project_template_file(name)
8
- File.join(File.dirname(__FILE__), 'projects', name)
9
- end
10
- def create_bundle_file()
11
- puts "create Gemfile"
12
- version = Luo::VERSION
13
- unless File.exist?('Gemfile')
14
- gemfile = <<-GEMFILE.gsub(/^ */, '')
15
- source 'https://rubygems.org'
16
- gem 'luo'
17
- gem 'iruby'
18
- gem 'pry'
19
- GEMFILE
20
- File.open('Gemfile', 'w') do |file|
21
- file.puts(gemfile)
22
- end
23
- end
24
- end
25
-
26
- def create_templates
27
- puts "create templates directory"
28
- unless File.directory?('templates')
29
- FileUtils.cp_r(File.join(__dir__, 'projects', 'prompts'), 'prompts')
30
- end
31
- end
32
-
33
- def create_agent_directory
34
- puts "create agent directory"
35
- FileUtils.mkdir_p('agents')
36
- end
37
-
38
- def create_application
39
- puts "create application"
40
- copy_file('init.rb', 'init.rb')
41
- copy_file('application.rb', 'app.rb')
42
- copy_file('env', '.env')
43
- copy_file('time_agent.rb', 'agents/time_agent.rb')
44
- copy_file('weather_agent.rb', 'agents/weather_agent.rb')
45
- copy_file('luo.ipynb', 'luo.ipynb')
46
- copy_file("test.yml", "test.yml")
47
- end
48
-
49
- def copy_file(file_name, target_file_name)
50
- puts "copy #{file_name} to #{target_file_name}"
51
- unless File.exist?(target_file_name)
52
- FileUtils.copy_file(project_template_file(file_name), target_file_name)
53
- end
54
- end
55
-
56
- def run()
57
- create_bundle_file
58
- create_templates
59
- create_agent_directory
60
- create_application
61
-
62
- Helpers.print_md """
63
- ## Luo Project Initialized
64
- You can now run `bundle install` to install the dependencies
65
- and edit .env to add your API key.
66
- and `bundle exec ruby application.rb` to run the project.
67
- """
68
- end
69
-
70
- end
71
- end
File without changes