roast-ai 0.4.8 → 0.4.10

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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1 -0
  4. data/Gemfile +6 -7
  5. data/Gemfile.lock +15 -3
  6. data/README.md +9 -5
  7. data/dsl/demo/Gemfile +4 -0
  8. data/dsl/demo/Gemfile.lock +120 -0
  9. data/dsl/demo/cogs/local.rb +15 -0
  10. data/dsl/demo/simple_external_cog.rb +17 -0
  11. data/dsl/less_simple.rb +112 -0
  12. data/dsl/plugin-gem-example/.gitignore +8 -0
  13. data/dsl/plugin-gem-example/Gemfile +13 -0
  14. data/dsl/plugin-gem-example/Gemfile.lock +178 -0
  15. data/dsl/plugin-gem-example/lib/other.rb +17 -0
  16. data/dsl/plugin-gem-example/lib/plugin_gem_example.rb +5 -0
  17. data/dsl/plugin-gem-example/lib/simple.rb +15 -0
  18. data/dsl/plugin-gem-example/lib/version.rb +10 -0
  19. data/dsl/plugin-gem-example/plugin-gem-example.gemspec +28 -0
  20. data/dsl/prototype.rb +25 -0
  21. data/dsl/scoped_executors.rb +28 -0
  22. data/dsl/simple.rb +5 -7
  23. data/dsl/simple_chat.rb +12 -0
  24. data/dsl/step_communication.rb +24 -0
  25. data/examples/grading/README.md +46 -0
  26. data/examples/grading/analyze_coverage/prompt.md +52 -0
  27. data/examples/grading/calculate_final_grade.rb +64 -0
  28. data/examples/grading/format_result.rb +61 -0
  29. data/examples/grading/generate_grades/prompt.md +105 -0
  30. data/examples/grading/generate_recommendations/output.txt +17 -0
  31. data/examples/grading/generate_recommendations/prompt.md +60 -0
  32. data/examples/grading/read_dependencies/prompt.md +15 -0
  33. data/examples/grading/verify_mocks_and_stubs/prompt.md +12 -0
  34. data/examples/grading/verify_test_helpers/prompt.md +53 -0
  35. data/examples/grading/workflow.md +5 -0
  36. data/examples/grading/workflow.yml +28 -0
  37. data/lib/roast/dsl/cog/config.rb +36 -0
  38. data/lib/roast/dsl/cog/input.rb +30 -0
  39. data/lib/roast/dsl/cog/output.rb +24 -0
  40. data/lib/roast/dsl/cog/registry.rb +39 -0
  41. data/lib/roast/dsl/cog/stack.rb +22 -0
  42. data/lib/roast/dsl/cog/store.rb +29 -0
  43. data/lib/roast/dsl/cog.rb +91 -0
  44. data/lib/roast/dsl/cog_input_context.rb +9 -0
  45. data/lib/roast/dsl/cog_input_manager.rb +47 -0
  46. data/lib/roast/dsl/cogs/chat.rb +78 -0
  47. data/lib/roast/dsl/cogs/cmd.rb +132 -0
  48. data/lib/roast/dsl/cogs/execute.rb +46 -0
  49. data/lib/roast/dsl/cogs/graph.rb +53 -0
  50. data/lib/roast/dsl/config_context.rb +9 -0
  51. data/lib/roast/dsl/config_manager.rb +96 -0
  52. data/lib/roast/dsl/execution_context.rb +9 -0
  53. data/lib/roast/dsl/execution_manager.rb +137 -0
  54. data/lib/roast/dsl/workflow.rb +113 -0
  55. data/lib/roast/error.rb +7 -0
  56. data/lib/roast/errors.rb +3 -3
  57. data/lib/roast/graph/edge.rb +25 -0
  58. data/lib/roast/graph/node.rb +40 -0
  59. data/lib/roast/graph/quantum_edge.rb +27 -0
  60. data/lib/roast/graph/threaded_exec.rb +93 -0
  61. data/lib/roast/graph.rb +233 -0
  62. data/lib/roast/resources/api_resource.rb +2 -2
  63. data/lib/roast/resources/url_resource.rb +2 -2
  64. data/lib/roast/tools/apply_diff.rb +1 -1
  65. data/lib/roast/tools/ask_user.rb +1 -1
  66. data/lib/roast/tools/bash.rb +1 -1
  67. data/lib/roast/tools/cmd.rb +2 -2
  68. data/lib/roast/tools/coding_agent.rb +2 -2
  69. data/lib/roast/tools/grep.rb +1 -1
  70. data/lib/roast/tools/read_file.rb +1 -1
  71. data/lib/roast/tools/search_file.rb +1 -1
  72. data/lib/roast/tools/swarm.rb +1 -1
  73. data/lib/roast/tools/update_files.rb +2 -2
  74. data/lib/roast/tools/write_file.rb +1 -1
  75. data/lib/roast/tools.rb +1 -1
  76. data/lib/roast/value_objects/api_token.rb +1 -1
  77. data/lib/roast/value_objects/uri_base.rb +1 -1
  78. data/lib/roast/value_objects/workflow_path.rb +1 -1
  79. data/lib/roast/version.rb +1 -1
  80. data/lib/roast/workflow/base_workflow.rb +38 -2
  81. data/lib/roast/workflow/command_executor.rb +1 -1
  82. data/lib/roast/workflow/configuration_loader.rb +1 -1
  83. data/lib/roast/workflow/error_handler.rb +1 -1
  84. data/lib/roast/workflow/step_executor_registry.rb +1 -1
  85. data/lib/roast/workflow/step_loader.rb +1 -1
  86. data/lib/roast/workflow/workflow_executor.rb +1 -1
  87. data/lib/roast.rb +4 -3
  88. data/roast.gemspec +1 -0
  89. data/sorbet/config +3 -0
  90. data/sorbet/rbi/annotations/.gitattributes +1 -0
  91. data/sorbet/rbi/annotations/activesupport.rbi +495 -0
  92. data/sorbet/rbi/annotations/faraday.rbi +17 -0
  93. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  94. data/sorbet/rbi/annotations/mocha.rbi +34 -0
  95. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  96. data/sorbet/rbi/annotations/webmock.rbi +9 -0
  97. data/sorbet/rbi/gems/marcel@1.1.0.rbi +239 -0
  98. data/sorbet/rbi/gems/{rack@2.2.17.rbi → rack@2.2.19.rbi} +55 -38
  99. data/sorbet/rbi/gems/{rexml@3.4.1.rbi → rexml@3.4.2.rbi} +284 -239
  100. data/sorbet/rbi/gems/ruby_llm@1.8.2.rbi +5703 -0
  101. data/sorbet/rbi/shims/lib/roast/dsl/cog_input_context.rbi +17 -0
  102. data/sorbet/rbi/shims/lib/roast/dsl/config_context.rbi +17 -0
  103. data/sorbet/rbi/shims/lib/roast/dsl/execution_context.rbi +17 -0
  104. data/sorbet/rbi/todo.rbi +7 -0
  105. metadata +84 -6
  106. data/lib/roast/dsl/executor.rb +0 -27
  107. data/package-lock.json +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0019e9658942394301e91581ecc45b259c76f1999f17cc8f1ddf4f97692ea639'
4
- data.tar.gz: feb3d19b4316a2ea2751347a614f816c22cbd53182821eed661488c760a9897a
3
+ metadata.gz: ef6e5b6234cde031dbec2498a1edfe20822de1afb336292ff0e55d3abada5748
4
+ data.tar.gz: 26992714777862482a9935b7b924f7064db3eed24d3fb25b18b21ef7b741385c
5
5
  SHA512:
6
- metadata.gz: b8c5442247e1e0aae1cb7aa4509a3724fb1867bf9b05b15cfe1da4a8287db1db8229026ad3be66cc450b57650e8dd00d4eca632021680f3320d2bbf8dd19fc89
7
- data.tar.gz: bbf18e07720a9cfe48abc2780f0f2cdba7d091bb3b2103318556910693dc54b09980ac0f2133876a811700345cdb6fa9e32d87cd4622f9039fe1bbbb7ffe3151
6
+ metadata.gz: 4dc6d30fa71c300fb83ae5144e6fbd55ab7770b25534daa6dadc24c58484276d590951840d196b074038328db317adda90c885d3f6779cfadc0125348e40cf23
7
+ data.tar.gz: 0d35f0494140641ec3c2a643e86f4b6b174adbbf44af866d617471c405b0247f51a45f53514488a28b4dbd6b0175ff87521752ffba663ab926e51259b7398eeb
data/.gitignore CHANGED
@@ -8,6 +8,7 @@
8
8
  /pkg/
9
9
  /spec/reports/
10
10
  /tmp/
11
+ /sig/generated/
11
12
  .CLAUDE.local.md
12
13
  .rspec_status
13
14
  **/.claude/settings.local.json
data/.rubocop.yml CHANGED
@@ -15,6 +15,7 @@ AllCops:
15
15
  - 'bin/*'
16
16
  - 'spec/fixtures/**/*'
17
17
  - 'test/fixtures/**/*'
18
+ - 'examples/**/*'
18
19
  SuggestExtensions: false
19
20
  TargetRubyVersion: 3.4
20
21
  UseCache: true
data/Gemfile CHANGED
@@ -8,20 +8,19 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
8
8
  gemspec
9
9
 
10
10
  gem "cgi"
11
+ gem "claude_swarm"
11
12
  gem "cli-ui", "2.3.0"
12
13
  gem "dotenv"
13
- gem "guard"
14
14
  gem "guard-minitest"
15
+ gem "guard"
16
+ gem "minitest-rg"
15
17
  gem "mocha"
16
18
  gem "rake", require: false
17
19
  gem "rubocop-shopify", require: false
18
20
  gem "rubocop-sorbet", require: false
21
+ gem "ruby_llm"
19
22
  gem "simplecov", require: false
20
- gem "minitest-rg"
21
- gem "vcr", require: false
22
- gem "webmock", require: false
23
-
24
23
  gem "sorbet", require: false
25
24
  gem "tapioca", require: false
26
-
27
- gem "claude_swarm"
25
+ gem "vcr", require: false
26
+ gem "webmock", require: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roast-ai (0.4.8)
4
+ roast-ai (0.4.10)
5
5
  activesupport (>= 7.0)
6
6
  cli-kit (~> 5.0)
7
7
  cli-ui (= 2.3.0)
@@ -10,6 +10,7 @@ PATH
10
10
  open_router (~> 0.3)
11
11
  raix (~> 1.0.2)
12
12
  ruby-graphviz (~> 1.2)
13
+ ruby_llm
13
14
  sqlite3 (~> 2.6)
14
15
  thor (~> 1.3)
15
16
  zeitwerk (~> 2.6)
@@ -133,6 +134,7 @@ GEM
133
134
  rb-inotify (~> 0.9, >= 0.9.10)
134
135
  logger (1.7.0)
135
136
  lumberjack (1.2.10)
137
+ marcel (1.1.0)
136
138
  method_source (1.1.0)
137
139
  mime-types (3.7.0)
138
140
  logger
@@ -167,7 +169,7 @@ GEM
167
169
  method_source (~> 1.0)
168
170
  public_suffix (6.0.2)
169
171
  racc (1.8.1)
170
- rack (2.2.17)
172
+ rack (2.2.20)
171
173
  rainbow (3.1.1)
172
174
  raix (1.0.2)
173
175
  activesupport (>= 6.0)
@@ -185,7 +187,7 @@ GEM
185
187
  rbs (3.9.4)
186
188
  logger
187
189
  regexp_parser (2.10.0)
188
- rexml (3.4.1)
190
+ rexml (3.4.2)
189
191
  rubocop (1.77.0)
190
192
  json (~> 2.3)
191
193
  language_server-protocol (~> 3.17.0.2)
@@ -213,6 +215,15 @@ GEM
213
215
  faraday-multipart (>= 1)
214
216
  ruby-progressbar (1.13.0)
215
217
  ruby2_keywords (0.0.5)
218
+ ruby_llm (1.8.2)
219
+ base64
220
+ event_stream_parser (~> 1)
221
+ faraday (>= 1.10.0)
222
+ faraday-multipart (>= 1)
223
+ faraday-net_http (>= 1)
224
+ faraday-retry (>= 1)
225
+ marcel (~> 1.0)
226
+ zeitwerk (~> 2)
216
227
  securerandom (0.4.1)
217
228
  shellany (0.0.1)
218
229
  simplecov (0.22.0)
@@ -284,6 +295,7 @@ DEPENDENCIES
284
295
  roast-ai!
285
296
  rubocop-shopify
286
297
  rubocop-sorbet
298
+ ruby_llm
287
299
  simplecov
288
300
  sorbet
289
301
  tapioca
data/README.md CHANGED
@@ -374,20 +374,24 @@ Roast supports several types of steps:
374
374
  ```yaml
375
375
  steps:
376
376
  - analyze_code
377
- - get_user_feedback:
377
+ - input:
378
+ name: get_user_feedback
378
379
  prompt: "Should we proceed with the refactoring? (yes/no)"
379
380
  type: confirm
380
- - review_changes:
381
+ - input:
382
+ name: review_changes
381
383
  prompt: "Enter your review comments"
382
384
  type: text
383
- - select_strategy:
385
+ - input:
386
+ name: select_strategy
384
387
  prompt: "Choose optimization strategy"
385
- type: select
388
+ type: choice
386
389
  options:
387
390
  - "Performance optimization"
388
391
  - "Memory optimization"
389
392
  - "Code clarity"
390
- - api_configuration:
393
+ - input:
394
+ name: api_configuration
391
395
  prompt: "Enter API key"
392
396
  type: password
393
397
  ```
data/dsl/demo/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ gem "roast-ai", path: "../.."
4
+ gem "plugin-gem-example", path: "../plugin-gem-example"
@@ -0,0 +1,120 @@
1
+ PATH
2
+ remote: ../..
3
+ specs:
4
+ roast-ai (0.4.9)
5
+ activesupport (>= 7.0)
6
+ cli-kit (~> 5.0)
7
+ cli-ui (= 2.3.0)
8
+ diff-lcs (~> 1.5)
9
+ json-schema
10
+ open_router (~> 0.3)
11
+ raix (~> 1.0.2)
12
+ ruby-graphviz (~> 1.2)
13
+ ruby_llm
14
+ sqlite3 (~> 2.6)
15
+ thor (~> 1.3)
16
+ zeitwerk (~> 2.6)
17
+
18
+ PATH
19
+ remote: ../plugin-gem-example
20
+ specs:
21
+ plugin-gem-example (0.1.0)
22
+ roast-ai
23
+
24
+ GEM
25
+ specs:
26
+ activesupport (8.0.3)
27
+ base64
28
+ benchmark (>= 0.3)
29
+ bigdecimal
30
+ concurrent-ruby (~> 1.0, >= 1.3.1)
31
+ connection_pool (>= 2.2.5)
32
+ drb
33
+ i18n (>= 1.6, < 2)
34
+ logger (>= 1.4.2)
35
+ minitest (>= 5.1)
36
+ securerandom (>= 0.3)
37
+ tzinfo (~> 2.0, >= 2.0.5)
38
+ uri (>= 0.13.1)
39
+ addressable (2.8.7)
40
+ public_suffix (>= 2.0.2, < 7.0)
41
+ base64 (0.3.0)
42
+ benchmark (0.4.1)
43
+ bigdecimal (3.3.1)
44
+ cli-kit (5.0.1)
45
+ cli-ui (~> 2.0)
46
+ cli-ui (2.3.0)
47
+ concurrent-ruby (1.3.5)
48
+ connection_pool (2.5.4)
49
+ diff-lcs (1.6.2)
50
+ dotenv (3.1.8)
51
+ drb (2.2.3)
52
+ event_stream_parser (1.0.0)
53
+ faraday (2.14.0)
54
+ faraday-net_http (>= 2.0, < 3.5)
55
+ json
56
+ logger
57
+ faraday-multipart (1.1.1)
58
+ multipart-post (~> 2.0)
59
+ faraday-net_http (3.4.1)
60
+ net-http (>= 0.5.0)
61
+ faraday-retry (2.3.2)
62
+ faraday (~> 2.0)
63
+ i18n (1.14.7)
64
+ concurrent-ruby (~> 1.0)
65
+ json (2.15.1)
66
+ json-schema (6.0.0)
67
+ addressable (~> 2.8)
68
+ bigdecimal (~> 3.1)
69
+ logger (1.7.0)
70
+ marcel (1.1.0)
71
+ minitest (5.26.0)
72
+ multipart-post (2.4.1)
73
+ net-http (0.6.0)
74
+ uri
75
+ open_router (0.3.3)
76
+ activesupport (>= 6.0)
77
+ dotenv (>= 2)
78
+ faraday (>= 1)
79
+ faraday-multipart (>= 1)
80
+ ostruct (0.6.3)
81
+ public_suffix (6.0.2)
82
+ raix (1.0.3)
83
+ activesupport (>= 6.0)
84
+ faraday-retry (~> 2.0)
85
+ open_router (~> 0.2)
86
+ ostruct
87
+ ruby-openai (~> 8.1)
88
+ rexml (3.4.4)
89
+ ruby-graphviz (1.2.5)
90
+ rexml
91
+ ruby-openai (8.3.0)
92
+ event_stream_parser (>= 0.3.0, < 2.0.0)
93
+ faraday (>= 1)
94
+ faraday-multipart (>= 1)
95
+ ruby_llm (1.8.2)
96
+ base64
97
+ event_stream_parser (~> 1)
98
+ faraday (>= 1.10.0)
99
+ faraday-multipart (>= 1)
100
+ faraday-net_http (>= 1)
101
+ faraday-retry (>= 1)
102
+ marcel (~> 1.0)
103
+ zeitwerk (~> 2)
104
+ securerandom (0.4.1)
105
+ sqlite3 (2.7.4-arm64-darwin)
106
+ thor (1.4.0)
107
+ tzinfo (2.0.6)
108
+ concurrent-ruby (~> 1.0)
109
+ uri (1.0.4)
110
+ zeitwerk (2.7.3)
111
+
112
+ PLATFORMS
113
+ arm64-darwin
114
+
115
+ DEPENDENCIES
116
+ plugin-gem-example!
117
+ roast-ai!
118
+
119
+ BUNDLED WITH
120
+ 2.6.8
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class Local < Roast::DSL::Cog
5
+ class Input < Roast::DSL::Cog::Input
6
+ def validate!
7
+ true
8
+ end
9
+ end
10
+
11
+ #: (Input) -> void
12
+ def execute(input)
13
+ puts "I'm a workflow-specific cog!"
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ #: self as Roast::DSL::Workflow
5
+
6
+ use "simple", from: "plugin_gem_example"
7
+ use "MyCogNamespace::Other", from: "plugin_gem_example"
8
+ use "local"
9
+
10
+ # Use multiple cogs
11
+ # use ["simple", "other"], from: "plugin_gem_example"
12
+
13
+ execute do
14
+ simple
15
+ other
16
+ local
17
+ end
@@ -0,0 +1,112 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ #### cmd
5
+
6
+ # Passing just the command to execute will run it and return the output
7
+ cmd <<~SHELLSTEP
8
+ echo "raw run without storing, should see me once""
9
+ SHELLSTEP
10
+
11
+ # Passing a name finds or creates an object and returns that
12
+ cmd_cog = cmd(:hello)
13
+ puts "This is our new cmd_cog named ':hello': #{cmd_cog}"
14
+
15
+ # We can set a command to run for later
16
+ cmd(:set_and_run).set("echo 'set_and_run, should see me once'")
17
+ cmd(:set_and_run).run
18
+
19
+ # Similarly, we can run immediately and then re-run later
20
+ cmd(:run_and_rerun).run("echo 'run_and_rerun, should see me twice'")
21
+ cmd(:run_and_rerun).run
22
+
23
+ #### graph
24
+
25
+ # We can open and re-open a graph, and then execute it
26
+ graph(:updatable) do |graph|
27
+ graph.node(:open_cmd) do |state|
28
+ state[:open] = cmd("echo 'From a node added in first open, should see me once'")
29
+ end
30
+ end
31
+
32
+ graph(:updatable) do |graph|
33
+ graph.node(:reopen_cmd) do |state|
34
+ state[:reopen] = cmd("echo 'From a node added in reopen, should see me once'")
35
+ end
36
+ end
37
+
38
+ graph(:yea).execute
39
+
40
+ # We can also just populate and execute a graph in one go by calling graph.execute in the block.
41
+ graph(:define_and_exec) do |graph|
42
+ graph.node(:hi) do |state|
43
+ state[:hi_msg] = cmd("echo 'hi msg'")
44
+ end
45
+
46
+ graph.execute
47
+ end
48
+
49
+ # We can have subgraphs, because why not
50
+ graph(:outer) do |graph|
51
+ graph.subgraph(:inner) do |subgraph|
52
+ subgraph.node(:inner_node) do |inner_state|
53
+ inner_state[:foo] = cmd("echo 'inner_state foo'")
54
+ end
55
+ end
56
+
57
+ graph.node(:outer) do |outer_state|
58
+ outer_state[:bar] = cmd("echo 'outer_state bar'")
59
+ end
60
+
61
+ graph.execute
62
+ end
63
+
64
+ # We can specify our own edges
65
+ graph(:edges) do |graph|
66
+ graph.node(:thing1) do |state|
67
+ state[:thing1] = cmd("echo 'thing1'")
68
+ end
69
+
70
+ graph.node(:thing2) do |state|
71
+ state[:thing2] = cmd("echo 'thing2'")
72
+ end
73
+
74
+ graph.edge(from: :START, to: :thing1)
75
+ graph.edge(from: :thing1, to: :thing2)
76
+ graph.edge(from: :thing2, to: :DONE)
77
+
78
+ graph.execute
79
+ end
80
+
81
+ # We can have parallel execution
82
+ graph(:parallel) do |graph|
83
+ graph.node(:thing1) do |state|
84
+ state[:thing1] = cmd("sleep 0.5 && echo 'parallel thing1'")
85
+ end
86
+
87
+ graph.node(:thing2) do |state|
88
+ state[:thing2] = cmd("sleep 0.5 && echo 'parallel thing2'")
89
+ end
90
+
91
+ graph.edge(from: :START, to: [:thing1, :thing2])
92
+ graph.edge(from: [:thing1, :thing2], to: :DONE)
93
+
94
+ graph.execute
95
+ end
96
+
97
+ # We can have edges that are defined with a block
98
+ graph(:quantum) do |graph|
99
+ graph.node(:thing1) do |state|
100
+ state[:thing1] = cmd("echo 'quantum thing1'")
101
+ end
102
+
103
+ graph.edge(from: :START) do |_state|
104
+ :thing1
105
+ end
106
+
107
+ graph.edge(from: :thing1) do |_state|
108
+ :DONE
109
+ end
110
+
111
+ graph.execute
112
+ end
@@ -0,0 +1,8 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in plugin-gem-example.gemspec
6
+ gemspec
7
+
8
+ gem "irb"
9
+ gem "rake", "~> 13.0"
10
+
11
+ gem "minitest", "~> 5.16"
12
+
13
+ gem "rubocop", "~> 1.21"
@@ -0,0 +1,178 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ plugin-gem-example (0.1.0)
5
+ roast-ai
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activesupport (8.0.3)
11
+ base64
12
+ benchmark (>= 0.3)
13
+ bigdecimal
14
+ concurrent-ruby (~> 1.0, >= 1.3.1)
15
+ connection_pool (>= 2.2.5)
16
+ drb
17
+ i18n (>= 1.6, < 2)
18
+ logger (>= 1.4.2)
19
+ minitest (>= 5.1)
20
+ securerandom (>= 0.3)
21
+ tzinfo (~> 2.0, >= 2.0.5)
22
+ uri (>= 0.13.1)
23
+ addressable (2.8.7)
24
+ public_suffix (>= 2.0.2, < 7.0)
25
+ ast (2.4.3)
26
+ base64 (0.3.0)
27
+ benchmark (0.4.1)
28
+ bigdecimal (3.3.1)
29
+ cli-kit (5.0.1)
30
+ cli-ui (~> 2.0)
31
+ cli-ui (2.3.0)
32
+ concurrent-ruby (1.3.5)
33
+ connection_pool (2.5.4)
34
+ date (3.4.1)
35
+ diff-lcs (1.6.2)
36
+ dotenv (3.1.8)
37
+ drb (2.2.3)
38
+ erb (5.1.1)
39
+ event_stream_parser (1.0.0)
40
+ faraday (2.14.0)
41
+ faraday-net_http (>= 2.0, < 3.5)
42
+ json
43
+ logger
44
+ faraday-multipart (1.1.1)
45
+ multipart-post (~> 2.0)
46
+ faraday-net_http (3.4.1)
47
+ net-http (>= 0.5.0)
48
+ faraday-retry (2.3.2)
49
+ faraday (~> 2.0)
50
+ i18n (1.14.7)
51
+ concurrent-ruby (~> 1.0)
52
+ io-console (0.8.1)
53
+ irb (1.15.2)
54
+ pp (>= 0.6.0)
55
+ rdoc (>= 4.0.0)
56
+ reline (>= 0.4.2)
57
+ json (2.15.1)
58
+ json-schema (6.0.0)
59
+ addressable (~> 2.8)
60
+ bigdecimal (~> 3.1)
61
+ language_server-protocol (3.17.0.5)
62
+ lint_roller (1.1.0)
63
+ logger (1.7.0)
64
+ minitest (5.26.0)
65
+ multipart-post (2.4.1)
66
+ net-http (0.6.0)
67
+ uri
68
+ open_router (0.3.3)
69
+ activesupport (>= 6.0)
70
+ dotenv (>= 2)
71
+ faraday (>= 1)
72
+ faraday-multipart (>= 1)
73
+ ostruct (0.6.3)
74
+ parallel (1.27.0)
75
+ parser (3.3.9.0)
76
+ ast (~> 2.4.1)
77
+ racc
78
+ pp (0.6.3)
79
+ prettyprint
80
+ prettyprint (0.2.0)
81
+ prism (1.6.0)
82
+ psych (5.2.6)
83
+ date
84
+ stringio
85
+ public_suffix (6.0.2)
86
+ racc (1.8.1)
87
+ rainbow (3.1.1)
88
+ raix (1.0.3)
89
+ activesupport (>= 6.0)
90
+ faraday-retry (~> 2.0)
91
+ open_router (~> 0.2)
92
+ ostruct
93
+ ruby-openai (~> 8.1)
94
+ rake (13.3.0)
95
+ rdoc (6.15.0)
96
+ erb
97
+ psych (>= 4.0.0)
98
+ tsort
99
+ regexp_parser (2.11.3)
100
+ reline (0.6.2)
101
+ io-console (~> 0.5)
102
+ rexml (3.4.4)
103
+ roast-ai (0.4.9)
104
+ activesupport (>= 7.0)
105
+ cli-kit (~> 5.0)
106
+ cli-ui (= 2.3.0)
107
+ diff-lcs (~> 1.5)
108
+ json-schema
109
+ open_router (~> 0.3)
110
+ raix (~> 1.0.2)
111
+ ruby-graphviz (~> 1.2)
112
+ sqlite3 (~> 2.6)
113
+ thor (~> 1.3)
114
+ zeitwerk (~> 2.6)
115
+ rubocop (1.81.1)
116
+ json (~> 2.3)
117
+ language_server-protocol (~> 3.17.0.2)
118
+ lint_roller (~> 1.1.0)
119
+ parallel (~> 1.10)
120
+ parser (>= 3.3.0.2)
121
+ rainbow (>= 2.2.2, < 4.0)
122
+ regexp_parser (>= 2.9.3, < 3.0)
123
+ rubocop-ast (>= 1.47.1, < 2.0)
124
+ ruby-progressbar (~> 1.7)
125
+ unicode-display_width (>= 2.4.0, < 4.0)
126
+ rubocop-ast (1.47.1)
127
+ parser (>= 3.3.7.2)
128
+ prism (~> 1.4)
129
+ ruby-graphviz (1.2.5)
130
+ rexml
131
+ ruby-openai (8.3.0)
132
+ event_stream_parser (>= 0.3.0, < 2.0.0)
133
+ faraday (>= 1)
134
+ faraday-multipart (>= 1)
135
+ ruby-progressbar (1.13.0)
136
+ securerandom (0.4.1)
137
+ sqlite3 (2.7.4-aarch64-linux-gnu)
138
+ sqlite3 (2.7.4-aarch64-linux-musl)
139
+ sqlite3 (2.7.4-arm-linux-gnu)
140
+ sqlite3 (2.7.4-arm-linux-musl)
141
+ sqlite3 (2.7.4-arm64-darwin)
142
+ sqlite3 (2.7.4-x86-linux-gnu)
143
+ sqlite3 (2.7.4-x86-linux-musl)
144
+ sqlite3 (2.7.4-x86_64-darwin)
145
+ sqlite3 (2.7.4-x86_64-linux-gnu)
146
+ sqlite3 (2.7.4-x86_64-linux-musl)
147
+ stringio (3.1.7)
148
+ thor (1.4.0)
149
+ tsort (0.2.0)
150
+ tzinfo (2.0.6)
151
+ concurrent-ruby (~> 1.0)
152
+ unicode-display_width (3.2.0)
153
+ unicode-emoji (~> 4.1)
154
+ unicode-emoji (4.1.0)
155
+ uri (1.0.4)
156
+ zeitwerk (2.7.3)
157
+
158
+ PLATFORMS
159
+ aarch64-linux-gnu
160
+ aarch64-linux-musl
161
+ arm-linux-gnu
162
+ arm-linux-musl
163
+ arm64-darwin
164
+ x86-linux-gnu
165
+ x86-linux-musl
166
+ x86_64-darwin
167
+ x86_64-linux-gnu
168
+ x86_64-linux-musl
169
+
170
+ DEPENDENCIES
171
+ irb
172
+ minitest (~> 5.16)
173
+ plugin-gem-example!
174
+ rake (~> 13.0)
175
+ rubocop (~> 1.21)
176
+
177
+ BUNDLED WITH
178
+ 2.6.8
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module MyCogNamespace
5
+ class Other < Roast::DSL::Cog
6
+ class Input < Roast::DSL::Cog::Input
7
+ def validate!
8
+ true
9
+ end
10
+ end
11
+
12
+ #: (Input) -> void
13
+ def execute(input)
14
+ puts "I'm a different cog!"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require "simple"
5
+ require "other"
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class Simple < Roast::DSL::Cog
5
+ class Input < Roast::DSL::Cog::Input
6
+ def validate!
7
+ true
8
+ end
9
+ end
10
+
11
+ #: (Input) -> void
12
+ def execute(input)
13
+ puts "I'm a cog!"
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ module Plugin
5
+ module Gem
6
+ module Example
7
+ VERSION = "0.1.0"
8
+ end
9
+ end
10
+ end