roast-ai 0.4.6 → 0.4.8

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 (286) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yaml +3 -1
  3. data/.gitignore +7 -0
  4. data/.rubocop.yml +14 -0
  5. data/Gemfile +2 -1
  6. data/Gemfile.lock +9 -1
  7. data/Rakefile +16 -4
  8. data/examples/README.md +9 -0
  9. data/examples/available_tools_demo/workflow.yml +2 -2
  10. data/examples/basic_prompt_workflow/workflow.md +1 -0
  11. data/examples/basic_prompt_workflow/workflow.yml +14 -0
  12. data/lib/roast/dsl/executor.rb +2 -1
  13. data/lib/roast/helpers/cmd_runner.rb +199 -0
  14. data/lib/roast/initializers.rb +1 -1
  15. data/lib/roast/tools/apply_diff.rb +1 -1
  16. data/lib/roast/tools/bash.rb +4 -4
  17. data/lib/roast/tools/cmd.rb +3 -5
  18. data/lib/roast/tools/coding_agent.rb +1 -1
  19. data/lib/roast/tools/grep.rb +6 -2
  20. data/lib/roast/tools/read_file.rb +2 -1
  21. data/lib/roast/tools/swarm.rb +2 -7
  22. data/lib/roast/tools.rb +10 -1
  23. data/lib/roast/version.rb +1 -1
  24. data/lib/roast/workflow/base_step.rb +2 -3
  25. data/lib/roast/workflow/command_executor.rb +3 -3
  26. data/lib/roast/workflow/resource_resolver.rb +1 -1
  27. data/lib/roast/workflow/shell_script_step.rb +1 -1
  28. data/lib/roast/workflow/step_loader.rb +2 -7
  29. data/lib/roast.rb +7 -1
  30. data/rubocop/cop/roast/use_cmd_runner.rb +93 -0
  31. data/rubocop/cop/roast.rb +4 -0
  32. data/sorbet/rbi/gems/docile@1.4.1.rbi +377 -0
  33. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +233 -2
  34. data/sorbet/rbi/gems/racc@1.8.1.rbi +6 -4
  35. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +396 -2
  36. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3788 -2
  37. data/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +7747 -2
  38. data/sorbet/rbi/gems/rubocop-sorbet@0.10.5.rbi +2386 -0
  39. data/sorbet/rbi/gems/rubocop@1.77.0.rbi +62813 -2
  40. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1311 -2
  41. data/sorbet/rbi/gems/simplecov-html@0.13.2.rbi +225 -0
  42. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +2259 -0
  43. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +9 -0
  44. data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +125 -2
  45. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +244 -2
  46. data/sorbet/tapioca/require.rb +2 -1
  47. metadata +12 -240
  48. data/CHANGELOG.md +0 -364
  49. data/examples/agent_continue/add_documentation/prompt.md +0 -5
  50. data/examples/agent_continue/add_error_handling/prompt.md +0 -5
  51. data/examples/agent_continue/analyze_codebase/prompt.md +0 -7
  52. data/examples/agent_continue/combined_workflow.yml +0 -24
  53. data/examples/agent_continue/continue_adding_features/prompt.md +0 -4
  54. data/examples/agent_continue/create_integration_tests/prompt.md +0 -3
  55. data/examples/agent_continue/document_with_context/prompt.md +0 -5
  56. data/examples/agent_continue/explore_api/prompt.md +0 -6
  57. data/examples/agent_continue/implement_client/prompt.md +0 -6
  58. data/examples/agent_continue/inline_workflow.yml +0 -20
  59. data/examples/agent_continue/refactor_code/prompt.md +0 -2
  60. data/examples/agent_continue/verify_changes/prompt.md +0 -6
  61. data/examples/agent_continue/workflow.yml +0 -27
  62. data/examples/agent_workflow/README.md +0 -75
  63. data/examples/agent_workflow/apply_refactorings/prompt.md +0 -22
  64. data/examples/agent_workflow/identify_code_smells/prompt.md +0 -15
  65. data/examples/agent_workflow/summarize_improvements/prompt.md +0 -18
  66. data/examples/agent_workflow/workflow.png +0 -0
  67. data/examples/agent_workflow/workflow.yml +0 -16
  68. data/examples/api_workflow/README.md +0 -85
  69. data/examples/api_workflow/fetch_api_data/prompt.md +0 -10
  70. data/examples/api_workflow/generate_report/prompt.md +0 -10
  71. data/examples/api_workflow/prompt.md +0 -10
  72. data/examples/api_workflow/transform_data/prompt.md +0 -10
  73. data/examples/api_workflow/workflow.png +0 -0
  74. data/examples/api_workflow/workflow.yml +0 -30
  75. data/examples/apply_diff_demo/README.md +0 -58
  76. data/examples/apply_diff_demo/apply_simple_change/prompt.md +0 -13
  77. data/examples/apply_diff_demo/create_sample_file/prompt.md +0 -11
  78. data/examples/apply_diff_demo/workflow.yml +0 -24
  79. data/examples/available_tools_demo/workflow.png +0 -0
  80. data/examples/bash_prototyping/README.md +0 -53
  81. data/examples/bash_prototyping/analyze_network/prompt.md +0 -13
  82. data/examples/bash_prototyping/analyze_system/prompt.md +0 -11
  83. data/examples/bash_prototyping/api_testing.png +0 -0
  84. data/examples/bash_prototyping/api_testing.yml +0 -14
  85. data/examples/bash_prototyping/check_processes/prompt.md +0 -11
  86. data/examples/bash_prototyping/generate_report/prompt.md +0 -16
  87. data/examples/bash_prototyping/process_json_response/prompt.md +0 -24
  88. data/examples/bash_prototyping/system_analysis.png +0 -0
  89. data/examples/bash_prototyping/system_analysis.yml +0 -14
  90. data/examples/bash_prototyping/test_public_api/prompt.md +0 -22
  91. data/examples/case_when/README.md +0 -58
  92. data/examples/case_when/detect_language/prompt.md +0 -16
  93. data/examples/case_when/workflow.png +0 -0
  94. data/examples/case_when/workflow.yml +0 -58
  95. data/examples/cmd/README.md +0 -99
  96. data/examples/cmd/analyze_project/prompt.md +0 -57
  97. data/examples/cmd/basic_demo/prompt.md +0 -48
  98. data/examples/cmd/basic_workflow.png +0 -0
  99. data/examples/cmd/basic_workflow.yml +0 -17
  100. data/examples/cmd/check_repository/prompt.md +0 -57
  101. data/examples/cmd/create_and_verify/prompt.md +0 -56
  102. data/examples/cmd/dev_workflow.png +0 -0
  103. data/examples/cmd/dev_workflow.yml +0 -26
  104. data/examples/cmd/explore_project/prompt.md +0 -67
  105. data/examples/cmd/explorer_workflow.png +0 -0
  106. data/examples/cmd/explorer_workflow.yml +0 -21
  107. data/examples/cmd/smart_tool_selection/prompt.md +0 -99
  108. data/examples/coding_agent_with_model.yml +0 -20
  109. data/examples/coding_agent_with_retries.yml +0 -30
  110. data/examples/conditional/README.md +0 -161
  111. data/examples/conditional/check_condition/prompt.md +0 -1
  112. data/examples/conditional/simple_workflow.png +0 -0
  113. data/examples/conditional/simple_workflow.yml +0 -15
  114. data/examples/conditional/workflow.png +0 -0
  115. data/examples/conditional/workflow.yml +0 -23
  116. data/examples/context_management_demo/README.md +0 -43
  117. data/examples/context_management_demo/workflow.yml +0 -42
  118. data/examples/direct_coerce_syntax/README.md +0 -32
  119. data/examples/direct_coerce_syntax/workflow.png +0 -0
  120. data/examples/direct_coerce_syntax/workflow.yml +0 -36
  121. data/examples/dot_notation/README.md +0 -37
  122. data/examples/dot_notation/workflow.png +0 -0
  123. data/examples/dot_notation/workflow.yml +0 -44
  124. data/examples/exit_on_error/README.md +0 -50
  125. data/examples/exit_on_error/analyze_lint_output/prompt.md +0 -9
  126. data/examples/exit_on_error/apply_fixes/prompt.md +0 -2
  127. data/examples/exit_on_error/workflow.png +0 -0
  128. data/examples/exit_on_error/workflow.yml +0 -19
  129. data/examples/grading/README.md +0 -71
  130. data/examples/grading/analyze_coverage/prompt.md +0 -52
  131. data/examples/grading/calculate_final_grade.rb +0 -67
  132. data/examples/grading/format_result.rb +0 -64
  133. data/examples/grading/generate_grades/prompt.md +0 -105
  134. data/examples/grading/generate_recommendations/output.txt +0 -17
  135. data/examples/grading/generate_recommendations/prompt.md +0 -60
  136. data/examples/grading/js_test_runner +0 -31
  137. data/examples/grading/rb_test_runner +0 -19
  138. data/examples/grading/read_dependencies/prompt.md +0 -16
  139. data/examples/grading/run_coverage.rb +0 -54
  140. data/examples/grading/verify_mocks_and_stubs/prompt.md +0 -12
  141. data/examples/grading/verify_test_helpers/prompt.md +0 -53
  142. data/examples/grading/workflow.md +0 -8
  143. data/examples/grading/workflow.png +0 -0
  144. data/examples/grading/workflow.rb.md +0 -6
  145. data/examples/grading/workflow.ts+tsx.md +0 -6
  146. data/examples/grading/workflow.yml +0 -41
  147. data/examples/instrumentation.rb +0 -76
  148. data/examples/interpolation/README.md +0 -50
  149. data/examples/interpolation/analyze_file/prompt.md +0 -1
  150. data/examples/interpolation/analyze_patterns/prompt.md +0 -27
  151. data/examples/interpolation/generate_report_for_js/prompt.md +0 -3
  152. data/examples/interpolation/generate_report_for_rb/prompt.md +0 -3
  153. data/examples/interpolation/sample.js +0 -48
  154. data/examples/interpolation/sample.rb +0 -42
  155. data/examples/interpolation/workflow.md +0 -1
  156. data/examples/interpolation/workflow.png +0 -0
  157. data/examples/interpolation/workflow.yml +0 -21
  158. data/examples/iteration/IMPLEMENTATION.md +0 -88
  159. data/examples/iteration/README.md +0 -68
  160. data/examples/iteration/analyze_complexity/prompt.md +0 -22
  161. data/examples/iteration/generate_recommendations/prompt.md +0 -21
  162. data/examples/iteration/generate_report/prompt.md +0 -129
  163. data/examples/iteration/implement_fix/prompt.md +0 -25
  164. data/examples/iteration/prioritize_issues/prompt.md +0 -24
  165. data/examples/iteration/prompts/analyze_file.md +0 -28
  166. data/examples/iteration/prompts/generate_summary.md +0 -24
  167. data/examples/iteration/prompts/update_report.md +0 -29
  168. data/examples/iteration/prompts/write_report.md +0 -22
  169. data/examples/iteration/read_file/prompt.md +0 -9
  170. data/examples/iteration/select_next_issue/prompt.md +0 -25
  171. data/examples/iteration/simple_workflow.md +0 -39
  172. data/examples/iteration/simple_workflow.yml +0 -58
  173. data/examples/iteration/update_fix_count/prompt.md +0 -26
  174. data/examples/iteration/verify_fix/prompt.md +0 -29
  175. data/examples/iteration/workflow.png +0 -0
  176. data/examples/iteration/workflow.yml +0 -42
  177. data/examples/json_handling/README.md +0 -32
  178. data/examples/json_handling/workflow.png +0 -0
  179. data/examples/json_handling/workflow.yml +0 -52
  180. data/examples/mcp/README.md +0 -223
  181. data/examples/mcp/analyze_changes/prompt.md +0 -8
  182. data/examples/mcp/analyze_issues/prompt.md +0 -4
  183. data/examples/mcp/analyze_schema/prompt.md +0 -4
  184. data/examples/mcp/check_data_quality/prompt.md +0 -5
  185. data/examples/mcp/check_documentation/prompt.md +0 -4
  186. data/examples/mcp/create_recommendations/prompt.md +0 -5
  187. data/examples/mcp/database_workflow.png +0 -0
  188. data/examples/mcp/database_workflow.yml +0 -29
  189. data/examples/mcp/env_demo/workflow.png +0 -0
  190. data/examples/mcp/env_demo/workflow.yml +0 -34
  191. data/examples/mcp/fetch_pr_context/prompt.md +0 -4
  192. data/examples/mcp/filesystem_demo/create_test_file/prompt.md +0 -2
  193. data/examples/mcp/filesystem_demo/list_files/prompt.md +0 -6
  194. data/examples/mcp/filesystem_demo/read_with_mcp/prompt.md +0 -7
  195. data/examples/mcp/filesystem_demo/workflow.png +0 -0
  196. data/examples/mcp/filesystem_demo/workflow.yml +0 -38
  197. data/examples/mcp/generate_insights/prompt.md +0 -4
  198. data/examples/mcp/generate_report/prompt.md +0 -6
  199. data/examples/mcp/generate_review/prompt.md +0 -16
  200. data/examples/mcp/github_workflow.png +0 -0
  201. data/examples/mcp/github_workflow.yml +0 -32
  202. data/examples/mcp/multi_mcp_workflow.png +0 -0
  203. data/examples/mcp/multi_mcp_workflow.yml +0 -58
  204. data/examples/mcp/post_review/prompt.md +0 -3
  205. data/examples/mcp/save_report/prompt.md +0 -6
  206. data/examples/mcp/search_issues/prompt.md +0 -2
  207. data/examples/mcp/summarize/prompt.md +0 -1
  208. data/examples/mcp/test_filesystem/prompt.md +0 -6
  209. data/examples/mcp/test_github/prompt.md +0 -8
  210. data/examples/mcp/test_read/prompt.md +0 -1
  211. data/examples/mcp/workflow.png +0 -0
  212. data/examples/mcp/workflow.yml +0 -35
  213. data/examples/no_model_fallback/README.md +0 -17
  214. data/examples/no_model_fallback/analyze_file/prompt.md +0 -1
  215. data/examples/no_model_fallback/analyze_patterns/prompt.md +0 -27
  216. data/examples/no_model_fallback/generate_report_for_md/prompt.md +0 -10
  217. data/examples/no_model_fallback/generate_report_for_rb/prompt.md +0 -3
  218. data/examples/no_model_fallback/sample.rb +0 -42
  219. data/examples/no_model_fallback/workflow.yml +0 -19
  220. data/examples/openrouter_example/README.md +0 -48
  221. data/examples/openrouter_example/analyze_input/prompt.md +0 -16
  222. data/examples/openrouter_example/generate_response/prompt.md +0 -9
  223. data/examples/openrouter_example/workflow.png +0 -0
  224. data/examples/openrouter_example/workflow.yml +0 -12
  225. data/examples/pre_post_processing/README.md +0 -111
  226. data/examples/pre_post_processing/analyze_test_file/prompt.md +0 -23
  227. data/examples/pre_post_processing/improve_test_coverage/prompt.md +0 -17
  228. data/examples/pre_post_processing/optimize_test_performance/prompt.md +0 -25
  229. data/examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md +0 -31
  230. data/examples/pre_post_processing/post_processing/cleanup_environment/prompt.md +0 -28
  231. data/examples/pre_post_processing/post_processing/generate_summary_report/prompt.md +0 -32
  232. data/examples/pre_post_processing/post_processing/output.txt +0 -24
  233. data/examples/pre_post_processing/pre_processing/gather_baseline_metrics/prompt.md +0 -26
  234. data/examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md +0 -11
  235. data/examples/pre_post_processing/validate_changes/prompt.md +0 -24
  236. data/examples/pre_post_processing/workflow.png +0 -0
  237. data/examples/pre_post_processing/workflow.yml +0 -21
  238. data/examples/retry/workflow.yml +0 -23
  239. data/examples/rspec_to_minitest/README.md +0 -68
  240. data/examples/rspec_to_minitest/analyze_spec/prompt.md +0 -30
  241. data/examples/rspec_to_minitest/create_minitest/prompt.md +0 -33
  242. data/examples/rspec_to_minitest/run_and_improve/prompt.md +0 -35
  243. data/examples/rspec_to_minitest/workflow.md +0 -10
  244. data/examples/rspec_to_minitest/workflow.png +0 -0
  245. data/examples/rspec_to_minitest/workflow.yml +0 -40
  246. data/examples/shared_config/README.md +0 -52
  247. data/examples/shared_config/example_with_shared_config/workflow.png +0 -0
  248. data/examples/shared_config/example_with_shared_config/workflow.yml +0 -6
  249. data/examples/shared_config/shared.png +0 -0
  250. data/examples/shared_config/shared.yml +0 -7
  251. data/examples/single_target_prepost/README.md +0 -36
  252. data/examples/single_target_prepost/post_processing/output.txt +0 -27
  253. data/examples/single_target_prepost/pre_processing/gather_dependencies/prompt.md +0 -11
  254. data/examples/single_target_prepost/workflow.png +0 -0
  255. data/examples/single_target_prepost/workflow.yml +0 -20
  256. data/examples/smart_coercion_defaults/README.md +0 -65
  257. data/examples/smart_coercion_defaults/workflow.png +0 -0
  258. data/examples/smart_coercion_defaults/workflow.yml +0 -44
  259. data/examples/step_configuration/README.md +0 -84
  260. data/examples/step_configuration/workflow.png +0 -0
  261. data/examples/step_configuration/workflow.yml +0 -57
  262. data/examples/swarm_example.yml +0 -25
  263. data/examples/tool_config_example/README.md +0 -109
  264. data/examples/tool_config_example/example_step/prompt.md +0 -42
  265. data/examples/tool_config_example/workflow.png +0 -0
  266. data/examples/tool_config_example/workflow.yml +0 -17
  267. data/examples/user_input/README.md +0 -90
  268. data/examples/user_input/funny_name/create_backstory/prompt.md +0 -10
  269. data/examples/user_input/funny_name/workflow.png +0 -0
  270. data/examples/user_input/funny_name/workflow.yml +0 -26
  271. data/examples/user_input/generate_summary/prompt.md +0 -11
  272. data/examples/user_input/simple_input_demo/workflow.png +0 -0
  273. data/examples/user_input/simple_input_demo/workflow.yml +0 -35
  274. data/examples/user_input/survey_workflow.png +0 -0
  275. data/examples/user_input/survey_workflow.yml +0 -71
  276. data/examples/user_input/welcome_message/prompt.md +0 -3
  277. data/examples/user_input/workflow.png +0 -0
  278. data/examples/user_input/workflow.yml +0 -73
  279. data/examples/workflow_generator/README.md +0 -27
  280. data/examples/workflow_generator/analyze_user_request/prompt.md +0 -34
  281. data/examples/workflow_generator/create_workflow_files/prompt.md +0 -32
  282. data/examples/workflow_generator/get_user_input/prompt.md +0 -14
  283. data/examples/workflow_generator/info_from_roast.rb +0 -22
  284. data/examples/workflow_generator/workflow.png +0 -0
  285. data/examples/workflow_generator/workflow.yml +0 -34
  286. data/lib/roast/helpers/timeout_handler.rb +0 -89
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roast-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
@@ -180,7 +180,6 @@ files:
180
180
  - ".rubocop.yml"
181
181
  - ".rubocop_todo.yml"
182
182
  - ".ruby-version"
183
- - CHANGELOG.md
184
183
  - CLAUDE.md
185
184
  - CLAUDE_NOTES.md
186
185
  - CODE_OF_CONDUCT.md
@@ -203,248 +202,14 @@ files:
203
202
  - docs/ITERATION_SYNTAX.md
204
203
  - docs/VALIDATION.md
205
204
  - dsl/simple.rb
206
- - examples/agent_continue/add_documentation/prompt.md
207
- - examples/agent_continue/add_error_handling/prompt.md
208
- - examples/agent_continue/analyze_codebase/prompt.md
209
- - examples/agent_continue/combined_workflow.yml
210
- - examples/agent_continue/continue_adding_features/prompt.md
211
- - examples/agent_continue/create_integration_tests/prompt.md
212
- - examples/agent_continue/document_with_context/prompt.md
213
- - examples/agent_continue/explore_api/prompt.md
214
- - examples/agent_continue/implement_client/prompt.md
215
- - examples/agent_continue/inline_workflow.yml
216
- - examples/agent_continue/refactor_code/prompt.md
217
- - examples/agent_continue/verify_changes/prompt.md
218
- - examples/agent_continue/workflow.yml
219
- - examples/agent_workflow/README.md
220
- - examples/agent_workflow/apply_refactorings/prompt.md
221
- - examples/agent_workflow/identify_code_smells/prompt.md
222
- - examples/agent_workflow/summarize_improvements/prompt.md
223
- - examples/agent_workflow/workflow.png
224
- - examples/agent_workflow/workflow.yml
225
- - examples/api_workflow/README.md
226
- - examples/api_workflow/fetch_api_data/prompt.md
227
- - examples/api_workflow/generate_report/prompt.md
228
- - examples/api_workflow/prompt.md
229
- - examples/api_workflow/transform_data/prompt.md
230
- - examples/api_workflow/workflow.png
231
- - examples/api_workflow/workflow.yml
232
- - examples/apply_diff_demo/README.md
233
- - examples/apply_diff_demo/apply_simple_change/prompt.md
234
- - examples/apply_diff_demo/create_sample_file/prompt.md
235
- - examples/apply_diff_demo/workflow.yml
205
+ - examples/README.md
236
206
  - examples/available_tools_demo/README.md
237
207
  - examples/available_tools_demo/analyze_files/prompt.md
238
208
  - examples/available_tools_demo/explore_directory/prompt.md
239
- - examples/available_tools_demo/workflow.png
240
209
  - examples/available_tools_demo/workflow.yml
241
210
  - examples/available_tools_demo/write_summary/prompt.md
242
- - examples/bash_prototyping/README.md
243
- - examples/bash_prototyping/analyze_network/prompt.md
244
- - examples/bash_prototyping/analyze_system/prompt.md
245
- - examples/bash_prototyping/api_testing.png
246
- - examples/bash_prototyping/api_testing.yml
247
- - examples/bash_prototyping/check_processes/prompt.md
248
- - examples/bash_prototyping/generate_report/prompt.md
249
- - examples/bash_prototyping/process_json_response/prompt.md
250
- - examples/bash_prototyping/system_analysis.png
251
- - examples/bash_prototyping/system_analysis.yml
252
- - examples/bash_prototyping/test_public_api/prompt.md
253
- - examples/case_when/README.md
254
- - examples/case_when/detect_language/prompt.md
255
- - examples/case_when/workflow.png
256
- - examples/case_when/workflow.yml
257
- - examples/cmd/README.md
258
- - examples/cmd/analyze_project/prompt.md
259
- - examples/cmd/basic_demo/prompt.md
260
- - examples/cmd/basic_workflow.png
261
- - examples/cmd/basic_workflow.yml
262
- - examples/cmd/check_repository/prompt.md
263
- - examples/cmd/create_and_verify/prompt.md
264
- - examples/cmd/dev_workflow.png
265
- - examples/cmd/dev_workflow.yml
266
- - examples/cmd/explore_project/prompt.md
267
- - examples/cmd/explorer_workflow.png
268
- - examples/cmd/explorer_workflow.yml
269
- - examples/cmd/smart_tool_selection/prompt.md
270
- - examples/coding_agent_with_model.yml
271
- - examples/coding_agent_with_retries.yml
272
- - examples/conditional/README.md
273
- - examples/conditional/check_condition/prompt.md
274
- - examples/conditional/simple_workflow.png
275
- - examples/conditional/simple_workflow.yml
276
- - examples/conditional/workflow.png
277
- - examples/conditional/workflow.yml
278
- - examples/context_management_demo/README.md
279
- - examples/context_management_demo/workflow.yml
280
- - examples/direct_coerce_syntax/README.md
281
- - examples/direct_coerce_syntax/workflow.png
282
- - examples/direct_coerce_syntax/workflow.yml
283
- - examples/dot_notation/README.md
284
- - examples/dot_notation/workflow.png
285
- - examples/dot_notation/workflow.yml
286
- - examples/exit_on_error/README.md
287
- - examples/exit_on_error/analyze_lint_output/prompt.md
288
- - examples/exit_on_error/apply_fixes/prompt.md
289
- - examples/exit_on_error/workflow.png
290
- - examples/exit_on_error/workflow.yml
291
- - examples/grading/README.md
292
- - examples/grading/analyze_coverage/prompt.md
293
- - examples/grading/calculate_final_grade.rb
294
- - examples/grading/format_result.rb
295
- - examples/grading/generate_grades/prompt.md
296
- - examples/grading/generate_recommendations/output.txt
297
- - examples/grading/generate_recommendations/prompt.md
298
- - examples/grading/js_test_runner
299
- - examples/grading/rb_test_runner
300
- - examples/grading/read_dependencies/prompt.md
301
- - examples/grading/run_coverage.rb
302
- - examples/grading/verify_mocks_and_stubs/prompt.md
303
- - examples/grading/verify_test_helpers/prompt.md
304
- - examples/grading/workflow.md
305
- - examples/grading/workflow.png
306
- - examples/grading/workflow.rb.md
307
- - examples/grading/workflow.ts+tsx.md
308
- - examples/grading/workflow.yml
309
- - examples/instrumentation.rb
310
- - examples/interpolation/README.md
311
- - examples/interpolation/analyze_file/prompt.md
312
- - examples/interpolation/analyze_patterns/prompt.md
313
- - examples/interpolation/generate_report_for_js/prompt.md
314
- - examples/interpolation/generate_report_for_rb/prompt.md
315
- - examples/interpolation/sample.js
316
- - examples/interpolation/sample.rb
317
- - examples/interpolation/workflow.md
318
- - examples/interpolation/workflow.png
319
- - examples/interpolation/workflow.yml
320
- - examples/iteration/IMPLEMENTATION.md
321
- - examples/iteration/README.md
322
- - examples/iteration/analyze_complexity/prompt.md
323
- - examples/iteration/generate_recommendations/prompt.md
324
- - examples/iteration/generate_report/prompt.md
325
- - examples/iteration/implement_fix/prompt.md
326
- - examples/iteration/prioritize_issues/prompt.md
327
- - examples/iteration/prompts/analyze_file.md
328
- - examples/iteration/prompts/generate_summary.md
329
- - examples/iteration/prompts/update_report.md
330
- - examples/iteration/prompts/write_report.md
331
- - examples/iteration/read_file/prompt.md
332
- - examples/iteration/select_next_issue/prompt.md
333
- - examples/iteration/simple_workflow.md
334
- - examples/iteration/simple_workflow.yml
335
- - examples/iteration/update_fix_count/prompt.md
336
- - examples/iteration/verify_fix/prompt.md
337
- - examples/iteration/workflow.png
338
- - examples/iteration/workflow.yml
339
- - examples/json_handling/README.md
340
- - examples/json_handling/workflow.png
341
- - examples/json_handling/workflow.yml
342
- - examples/mcp/README.md
343
- - examples/mcp/analyze_changes/prompt.md
344
- - examples/mcp/analyze_issues/prompt.md
345
- - examples/mcp/analyze_schema/prompt.md
346
- - examples/mcp/check_data_quality/prompt.md
347
- - examples/mcp/check_documentation/prompt.md
348
- - examples/mcp/create_recommendations/prompt.md
349
- - examples/mcp/database_workflow.png
350
- - examples/mcp/database_workflow.yml
351
- - examples/mcp/env_demo/workflow.png
352
- - examples/mcp/env_demo/workflow.yml
353
- - examples/mcp/fetch_pr_context/prompt.md
354
- - examples/mcp/filesystem_demo/create_test_file/prompt.md
355
- - examples/mcp/filesystem_demo/list_files/prompt.md
356
- - examples/mcp/filesystem_demo/read_with_mcp/prompt.md
357
- - examples/mcp/filesystem_demo/workflow.png
358
- - examples/mcp/filesystem_demo/workflow.yml
359
- - examples/mcp/generate_insights/prompt.md
360
- - examples/mcp/generate_report/prompt.md
361
- - examples/mcp/generate_review/prompt.md
362
- - examples/mcp/github_workflow.png
363
- - examples/mcp/github_workflow.yml
364
- - examples/mcp/multi_mcp_workflow.png
365
- - examples/mcp/multi_mcp_workflow.yml
366
- - examples/mcp/post_review/prompt.md
367
- - examples/mcp/save_report/prompt.md
368
- - examples/mcp/search_issues/prompt.md
369
- - examples/mcp/summarize/prompt.md
370
- - examples/mcp/test_filesystem/prompt.md
371
- - examples/mcp/test_github/prompt.md
372
- - examples/mcp/test_read/prompt.md
373
- - examples/mcp/workflow.png
374
- - examples/mcp/workflow.yml
375
- - examples/no_model_fallback/README.md
376
- - examples/no_model_fallback/analyze_file/prompt.md
377
- - examples/no_model_fallback/analyze_patterns/prompt.md
378
- - examples/no_model_fallback/generate_report_for_md/prompt.md
379
- - examples/no_model_fallback/generate_report_for_rb/prompt.md
380
- - examples/no_model_fallback/sample.rb
381
- - examples/no_model_fallback/workflow.yml
382
- - examples/openrouter_example/README.md
383
- - examples/openrouter_example/analyze_input/prompt.md
384
- - examples/openrouter_example/generate_response/prompt.md
385
- - examples/openrouter_example/workflow.png
386
- - examples/openrouter_example/workflow.yml
387
- - examples/pre_post_processing/README.md
388
- - examples/pre_post_processing/analyze_test_file/prompt.md
389
- - examples/pre_post_processing/improve_test_coverage/prompt.md
390
- - examples/pre_post_processing/optimize_test_performance/prompt.md
391
- - examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md
392
- - examples/pre_post_processing/post_processing/cleanup_environment/prompt.md
393
- - examples/pre_post_processing/post_processing/generate_summary_report/prompt.md
394
- - examples/pre_post_processing/post_processing/output.txt
395
- - examples/pre_post_processing/pre_processing/gather_baseline_metrics/prompt.md
396
- - examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md
397
- - examples/pre_post_processing/validate_changes/prompt.md
398
- - examples/pre_post_processing/workflow.png
399
- - examples/pre_post_processing/workflow.yml
400
- - examples/retry/workflow.yml
401
- - examples/rspec_to_minitest/README.md
402
- - examples/rspec_to_minitest/analyze_spec/prompt.md
403
- - examples/rspec_to_minitest/create_minitest/prompt.md
404
- - examples/rspec_to_minitest/run_and_improve/prompt.md
405
- - examples/rspec_to_minitest/workflow.md
406
- - examples/rspec_to_minitest/workflow.png
407
- - examples/rspec_to_minitest/workflow.yml
408
- - examples/shared_config/README.md
409
- - examples/shared_config/example_with_shared_config/workflow.png
410
- - examples/shared_config/example_with_shared_config/workflow.yml
411
- - examples/shared_config/shared.png
412
- - examples/shared_config/shared.yml
413
- - examples/single_target_prepost/README.md
414
- - examples/single_target_prepost/post_processing/output.txt
415
- - examples/single_target_prepost/pre_processing/gather_dependencies/prompt.md
416
- - examples/single_target_prepost/workflow.png
417
- - examples/single_target_prepost/workflow.yml
418
- - examples/smart_coercion_defaults/README.md
419
- - examples/smart_coercion_defaults/workflow.png
420
- - examples/smart_coercion_defaults/workflow.yml
421
- - examples/step_configuration/README.md
422
- - examples/step_configuration/workflow.png
423
- - examples/step_configuration/workflow.yml
424
- - examples/swarm_example.yml
425
- - examples/tool_config_example/README.md
426
- - examples/tool_config_example/example_step/prompt.md
427
- - examples/tool_config_example/workflow.png
428
- - examples/tool_config_example/workflow.yml
429
- - examples/user_input/README.md
430
- - examples/user_input/funny_name/create_backstory/prompt.md
431
- - examples/user_input/funny_name/workflow.png
432
- - examples/user_input/funny_name/workflow.yml
433
- - examples/user_input/generate_summary/prompt.md
434
- - examples/user_input/simple_input_demo/workflow.png
435
- - examples/user_input/simple_input_demo/workflow.yml
436
- - examples/user_input/survey_workflow.png
437
- - examples/user_input/survey_workflow.yml
438
- - examples/user_input/welcome_message/prompt.md
439
- - examples/user_input/workflow.png
440
- - examples/user_input/workflow.yml
441
- - examples/workflow_generator/README.md
442
- - examples/workflow_generator/analyze_user_request/prompt.md
443
- - examples/workflow_generator/create_workflow_files/prompt.md
444
- - examples/workflow_generator/get_user_input/prompt.md
445
- - examples/workflow_generator/info_from_roast.rb
446
- - examples/workflow_generator/workflow.png
447
- - examples/workflow_generator/workflow.yml
211
+ - examples/basic_prompt_workflow/workflow.md
212
+ - examples/basic_prompt_workflow/workflow.yml
448
213
  - exe/roast
449
214
  - gemfiles/activesupport7.gemfile
450
215
  - gemfiles/activesupport8.gemfile
@@ -453,13 +218,13 @@ files:
453
218
  - lib/roast/dsl/executor.rb
454
219
  - lib/roast/errors.rb
455
220
  - lib/roast/factories/api_provider_factory.rb
221
+ - lib/roast/helpers/cmd_runner.rb
456
222
  - lib/roast/helpers/function_caching_interceptor.rb
457
223
  - lib/roast/helpers/logger.rb
458
224
  - lib/roast/helpers/metadata_access.rb
459
225
  - lib/roast/helpers/minitest_coverage_runner.rb
460
226
  - lib/roast/helpers/path_resolver.rb
461
227
  - lib/roast/helpers/prompt_loader.rb
462
- - lib/roast/helpers/timeout_handler.rb
463
228
  - lib/roast/initializers.rb
464
229
  - lib/roast/resources.rb
465
230
  - lib/roast/resources/api_resource.rb
@@ -561,6 +326,8 @@ files:
561
326
  - lib/roast/workflow_diagram_generator.rb
562
327
  - package-lock.json
563
328
  - roast.gemspec
329
+ - rubocop/cop/roast.rb
330
+ - rubocop/cop/roast/use_cmd_runner.rb
564
331
  - schema/workflow.json
565
332
  - shipit.rubygems.yml
566
333
  - sorbet/config
@@ -582,6 +349,7 @@ files:
582
349
  - sorbet/rbi/gems/connection_pool@2.5.3.rbi
583
350
  - sorbet/rbi/gems/crack@1.0.0.rbi
584
351
  - sorbet/rbi/gems/diff-lcs@1.6.2.rbi
352
+ - sorbet/rbi/gems/docile@1.4.1.rbi
585
353
  - sorbet/rbi/gems/dotenv@3.1.8.rbi
586
354
  - sorbet/rbi/gems/drb@2.2.3.rbi
587
355
  - sorbet/rbi/gems/dry-configurable@1.3.0.rbi
@@ -643,6 +411,7 @@ files:
643
411
  - sorbet/rbi/gems/rexml@3.4.1.rbi
644
412
  - sorbet/rbi/gems/rubocop-ast@1.45.1.rbi
645
413
  - sorbet/rbi/gems/rubocop-shopify@2.17.1.rbi
414
+ - sorbet/rbi/gems/rubocop-sorbet@0.10.5.rbi
646
415
  - sorbet/rbi/gems/rubocop@1.77.0.rbi
647
416
  - sorbet/rbi/gems/ruby-graphviz@1.2.5.rbi
648
417
  - sorbet/rbi/gems/ruby-openai@8.1.0.rbi
@@ -650,6 +419,9 @@ files:
650
419
  - sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi
651
420
  - sorbet/rbi/gems/securerandom@0.4.1.rbi
652
421
  - sorbet/rbi/gems/shellany@0.0.1.rbi
422
+ - sorbet/rbi/gems/simplecov-html@0.13.2.rbi
423
+ - sorbet/rbi/gems/simplecov@0.22.0.rbi
424
+ - sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi
653
425
  - sorbet/rbi/gems/spoom@1.6.3.rbi
654
426
  - sorbet/rbi/gems/sqlite3@2.7.0.rbi
655
427
  - sorbet/rbi/gems/tapioca@0.16.11.rbi
data/CHANGELOG.md DELETED
@@ -1,364 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [0.4.6]
9
-
10
- ### Added
11
- - Step retries
12
-
13
- ### Fixed
14
- - Tokens containing whitespace
15
-
16
- ## [0.4.5]
17
-
18
- ### Added
19
- - **Sorbet static type checking** (#359, #360, #362)
20
- - Initial setup of Sorbet for static type analysis
21
- - Added `bin/srb tc` command for type checking
22
- - Gradually adding type signatures to improve code safety and navigation
23
- - Fixed invalid constants that were undefined and never reached
24
- - Added to CI pipeline for continuous type checking
25
- - **Workflow name in step event payloads** (#333, #351)
26
- - Added `workflow_name` field to all step-related ActiveSupport::Notification events
27
- - Enables better tracking of which workflow a step belongs to in monitoring systems
28
- - Updated events: `roast.step.start`, `roast.step.complete`, `roast.step.error`
29
-
30
- ### Changed
31
- - **Improved error output formatting** (#358)
32
- - Error messages now show concise output by default (just the error message)
33
- - Full exception details and stack traces only shown in verbose mode (`-v`)
34
- - Makes error output cleaner and more user-friendly
35
- - **Consolidated workflow runner architecture** (#355)
36
- - Merged ConfigurationParser functionality into WorkflowRunner for better cohesion
37
- - Simplified the codebase by removing redundant abstraction layers
38
-
39
- ### Fixed
40
- - **Removed duplicated pre/post processing code** (#357)
41
- - Extracted common pre/post processing logic from individual step executors
42
- - Eliminated code duplication across different step types
43
- - Improved maintainability and consistency
44
-
45
- ## [0.4.3] - 2025-07-10
46
-
47
- ### Changed
48
- - **Updated to raix-openai-eight gem** - Upgraded from `raix` to `raix-openai-eight` gem which supports OpenAI Ruby client v8.1
49
-
50
- ## [0.4.2] - 2025-06-20
51
-
52
- ### Added
53
- - **Multiline bash command support** (#289)
54
- - Enhanced CommandExecutor to properly handle commands spanning multiple lines
55
- - Enables sophisticated bash scripts in workflow steps
56
- - Maintains backward compatibility with single-line commands
57
- - **Comprehensive shell security enhancements** (#289)
58
- - Smart interpolation that detects shell commands and escapes dangerous characters
59
- - Protection against shell injection for all major metacharacters:
60
- - Backslashes (`\`) to prevent path injection
61
- - Double quotes (`"`) to prevent breaking quoted contexts
62
- - Dollar signs (`$`) to prevent variable expansion
63
- - Backticks (`` ` ``) to prevent command substitution
64
- - Context-aware escaping only in shell commands, preserving text elsewhere
65
- - **Early detection for missing Raix configuration** (#292)
66
- - Provides helpful error messages when Raix is not properly initialized
67
- - Shows example configuration for both OpenAI and OpenRouter
68
- - Prevents cryptic "undefined method 'chat' for nil" errors
69
- - **Exit early feature for input steps** (#291)
70
- - Pressing Ctrl-C during input steps now exits cleanly
71
- - No more confusing stack traces when canceling input
72
- - **Default --dangerously-skip-permissions flag for CodingAgent** (#290)
73
- - Avoids permission prompts during automated workflows
74
- - Improves workflow automation experience
75
-
76
- ### Fixed
77
- - Test isolation issue causing CI failures (#289)
78
- - Flaky test in StepExecutorRegistryTest due to executor registration conflicts (#289)
79
- - Shell command interpolation security vulnerabilities (#289)
80
- - Missing dependency declarations (cli-kit, sqlite3) (#292)
81
-
82
- ### Changed
83
- - Updated cli-kit dependency to ~> 5.0 for better error handling
84
- - Updated sqlite3 dependency to ~> 2.6 to resolve version conflicts
85
-
86
- [0.4.2]: https://github.com/Shopify/roast/compare/v0.4.1...v0.4.2
87
-
88
- ## [0.4.1] - 2025-06-18
89
-
90
- ### Added
91
- - **SQLite session storage** as the default storage backend (#252)
92
- - Provides better performance and advanced querying capabilities
93
- - Sessions are stored in `~/.roast/sessions.db` by default (configurable via `ROAST_SESSIONS_DB`)
94
- - New `roast sessions` command to list and filter stored sessions
95
- - New `roast session <id>` command to view detailed session information
96
- - Session cleanup with `roast sessions --cleanup --older-than <duration>`
97
- - Filter sessions by status, workflow name, or age
98
- - Maintains full backward compatibility with filesystem storage
99
- - **`--file-storage` CLI option** to use legacy filesystem storage instead of SQLite
100
- - Use `-f` or `--file-storage` flag to opt into filesystem storage
101
- - Environment variable `ROAST_STATE_STORAGE=file` still supported for compatibility
102
- - **Foundation for wait_for_event feature** (#251)
103
- - New `roast resume` command infrastructure for resuming paused workflows
104
- - Event storage and tracking in SQLite sessions table
105
- - **Configurable agent step options** for CodingAgent (#266)
106
- - New `continue` option for agent steps to maintain session context across multiple agent invocations
107
- - New `include_context_summary` option to provide AI-generated workflow context summaries to agents
108
- - Context summaries are intelligently tailored to the agent's specific task using LLM analysis
109
- - Helps reduce token usage by including only relevant context information
110
- - **Token consumption reporting** for step execution (#264)
111
- - Displays token usage (prompt and completion) after each step execution
112
- - Helps users monitor and optimize their LLM token consumption
113
- - Automatically enabled for all workflow runs
114
- - **Timeout functionality for bash and cmd steps** (#261)
115
- - New `timeout` option for bash and cmd steps to prevent hanging commands
116
- - Configurable timeout duration in seconds
117
- - Commands are automatically terminated if they exceed the specified timeout
118
- - Prevents workflows from getting stuck on unresponsive commands
119
- - **Claude Swarm tool integration** (#254)
120
- - New `Roast::Tools::Swarm` for integrating with Claude Swarm framework
121
- - Enables using Swarm's multi-agent orchestration capabilities within Roast workflows
122
- - Provides seamless handoffs between specialized AI agents
123
- - **Workflow visualization with diagram command** (#256)
124
- - New `roast diagram` command to generate visual representations of workflows
125
- - Creates GraphViz-based diagrams showing workflow structure and flow
126
- - Supports both DOT format output and PNG/SVG image generation
127
- - Helps understand complex workflow logic at a glance
128
- - **Comprehensive workflow validation** (#244)
129
- - New `roast validate` command to check workflow syntax and structure
130
- - Validates YAML syntax, step references, and configuration options
131
- - Provides detailed error messages for invalid workflows
132
- - Helps catch errors before running workflows
133
- - **apply_diff tool** (#246)
134
- - New built-in tool for applying unified diff patches to files
135
- - Supports standard diff format for making precise file modifications
136
- - Enables AI models to suggest changes in diff format
137
- - More reliable than search-and-replace for complex edits
138
- - **Model fallback mechanism** (#257)
139
- - Workflows without explicit model configuration now use a sensible default
140
- - Prevents errors when model is not specified at workflow or step level
141
- - Improves user experience for simple workflows
142
- - **Context management foundation for auto-compaction** (#264)
143
- - Infrastructure for future automatic context size management
144
- - Enables intelligent token usage optimization in long-running workflows
145
-
146
- ### Changed
147
- - Session storage now defaults to SQLite instead of filesystem
148
- - Existing filesystem sessions remain accessible when using `--file-storage` flag
149
- - No migration required - both storage backends can coexist
150
-
151
- [0.4.1]: https://github.com/Shopify/roast/compare/v0.4.0...v0.4.1
152
-
153
- ## [0.4.0] - 2025-06-12
154
-
155
- ### Added
156
- - **Input step type** for collecting user input during workflow execution (#154)
157
- - Interactive prompts pause workflow execution to collect user input
158
- - Supports multiple input types: `text` (default), `confirm`, `select`, and `password`
159
- - `confirm` type provides yes/no prompts with boolean results
160
- - `select` type allows choosing from a list of options
161
- - `password` type masks input for sensitive data using io/console
162
- - Input values are stored in workflow output and accessible via dot notation (e.g., `{{output.step_name}}`)
163
- - Integrates with CLI::UI for consistent formatting and user experience
164
- - **Agent step type** for direct pass-through to coding agents (#151)
165
- - Steps prefixed with `^` send prompts directly to the CodingAgent tool
166
- - Supports both file-based and inline agent prompts
167
- - Bypasses LLM interpretation for precise agent instructions
168
-
169
- ### Fixed
170
- - DotAccessHash array wrapping and template response handling
171
- - CLI::UI formatting and color handling for better terminal output
172
-
173
- ## [0.3.1] - 2025-06-05
174
-
175
- ### Added
176
- - Default `print_response: true` for the last step in a workflow (#100)
177
- - The last step now automatically prints its response unless explicitly configured otherwise
178
- - Helps newcomers who would otherwise see no output from their workflows
179
- - Works with all step types: string steps, hash steps with variable assignment, and conditional steps
180
- - Parallel steps and iteration steps are intelligently handled (no automatic output since there's no single "last" step)
181
-
182
- ### Fixed
183
- - PromptStep now properly passes `print_response`, `json`, and `params` parameters to chat_completion
184
-
185
- ## [0.3.0] - 2025-06-04
186
-
187
- ### Changed
188
- - **BREAKING**: Upgraded to Raix 1.0.0 (#141)
189
- - Removed the deprecated `loop` parameter from chat_completion calls
190
- - Raix 1.0 automatically continues after tool calls until providing a text response
191
- - All chat completions now return strings (no longer arrays or complex structures)
192
- - JSON responses are automatically parsed when `json: true` is specified
193
- - **BREAKING**: Removed configurable `loop` and `auto_loop` options from workflow configuration (#140)
194
- - The `loop:` and `auto_loop:` YAML configuration options have been removed entirely
195
- - Looping behavior is now automatic: always enabled when tools are present, disabled when no tools exist
196
- - This simplifies the codebase and makes behavior more predictable
197
- - To migrate: remove any `loop: true/false` or `auto_loop: true/false` settings from your workflow YAML files
198
-
199
- ### Fixed
200
- - Enhanced boolean coercion to treat empty strings as false
201
- - Improved iterable coercion to handle JSON array strings
202
- - Fixed all tests to work with Raix 1.0's string-only responses
203
-
204
- ## [0.2.3] - 2025-05-29
205
-
206
- ### Fixed
207
- - Model inheritance for nested steps in iteration steps (#105)
208
- - Nested steps within `repeat` and `each` blocks now properly inherit model configuration
209
- - Configuration hierarchy works correctly: step-specific → workflow-level → default model
210
- - Previously, nested steps always used the default model regardless of configuration
211
-
212
- ## [0.2.2] - 2025-05-29
213
-
214
- ### Added
215
- - Pre/post processing framework for workflows with `pre_processing` and `post_processing` sections (#86)
216
- - Support for `output.txt` ERB templates in post-processing phase for custom output formatting
217
- - Pre/post processing support for single-target workflows (not just multi-target)
218
- - Simplified access to pre-processing data in target workflows (removed `output` intermediary level)
219
- - Verbose mode improvements for better debugging experience (#98)
220
- - Command outputs are now displayed when using the `--verbose` flag
221
- - Commands executed within conditional branches also show output in verbose mode
222
- - User-friendly error reporting for workflow failures (#98)
223
- - Clear ❌ indicators when commands or steps fail
224
- - Command failures show exit status and output (no verbose needed for failures)
225
- - Step failures provide helpful context about what might be wrong
226
- - Exit handler displays actionable suggestions for resolving issues
227
- - Automatic workflow discovery by name (#97)
228
- - Can now run workflows by name without full path: `roast execute my_workflow`
229
- - Automatically looks for `roast/my_workflow/workflow.yml` in current directory
230
- - Configurable base URI for API endpoints (#83)
231
-
232
- ### Fixed
233
- - Search file tool now correctly prefixes paths when searching (#92)
234
- - Support for Ruby projects using ActiveSupport 7.0+ (#95)
235
-
236
- ### Changed
237
- - ActiveSupport dependency relaxed to >= 7.0 for broader compatibility
238
-
239
- ## [0.2.1]
240
-
241
- ### Added
242
- - Smart coercion defaults for boolean expressions based on step type
243
- - Ruby expressions (`{{expr}}`) default to regular boolean coercion
244
- - Bash commands (`$(cmd)`) default to exit code interpretation
245
- - Inline prompts and regular steps default to "smart" LLM-powered interpretation (looks for truthy or falsy language)
246
- - Direct syntax for step configuration - `coerce_to` and other options are now specified directly on iteration steps
247
-
248
- ## [0.2.0] - 2025-05-26
249
-
250
- ### Added
251
- - Conditional execution support with `if` and `unless` clauses for workflow steps
252
- - Iteration mechanisms for workflows with `repeat` and `each` constructs (resolving issue #48)
253
- - Support for conditional repetition with `until` condition and safety limits
254
- - Collection iteration with variable binding for processing lists of items
255
- - State persistence for loop iterations to enable resumption after failure
256
- - Standardized evaluation of Ruby expressions in iteration constructs using `{{}}` syntax
257
- - Support for using bash commands, step names, and Ruby expressions in iteration conditions and collections
258
- - Intelligent LLM response to boolean conversion with pattern-based recognition for natural language responses
259
- - `exit_on_error` configuration option for command steps to continue workflow on failure (resolving issue #71)
260
- - Dot notation access for workflow outputs (e.g., `workflow.output.step.field`)
261
- - `--pause` flag for stepping through workflow execution interactively
262
-
263
- ### Fixed
264
- - Automatically add `.gitignore` file to cache directory when created (completing issue #22)
265
- - Load initializers before trying to load tools in case custom tools are defined in initializers (thanks @palkan)
266
- - Fix loading of targetless workflows (thanks @palkan)
267
- - Fix OpenRouter support (thanks @xrendan)
268
- - API authentication error handling and model access issues
269
- - Conditional step transcript replay regression
270
- - DotAccessHash serialization for AI prompts
271
-
272
- ### Improved
273
- - Enhanced search file tool logging to show full expanded paths instead of relative paths
274
- - Major refactoring to eliminate circular dependencies and improve architecture
275
- - Extracted command execution logic into dedicated CommandExecutor class
276
- - Separated conditional execution from iteration logic for better SOLID compliance
277
- - Enhanced error messages for API authentication failures
278
- - Replaced all `require_relative` with `require` statements for consistency
279
-
280
- ### Changed
281
- - Refactored god objects to improve code organization and maintainability
282
- - Improved separation of concerns between workflow components
283
-
284
- [0.2.0]: https://github.com/Shopify/roast/compare/v0.1.7...v0.2.0
285
-
286
- ## [0.1.7] - 2024-05-16
287
-
288
- ### Added
289
- - `UpdateFiles` tool for applying diffs/patches to multiple files at once
290
- - Support for atomic file updates with rollback capability
291
- - Comprehensive documentation for all built-in tools
292
- - Enhanced README with detailed tool usage examples
293
-
294
- ``[0.1.7]: https://github.com/Shopify/roast/compare/v0.1.6...v0.1.7
295
-
296
- ## [0.1.6] - 2024-05-15
297
-
298
- ### Added
299
- - Support for OpenRouter as an API provider
300
- - `api_provider` configuration option allowing choice between OpenAI and OpenRouter
301
- - Added separate CI rake task for improved build pipeline
302
- - Version command to check current Roast version
303
- - Walking up to home folder for config root
304
- - Improved initializer support for better project configuration
305
-
306
- ### Changed
307
- - Enhanced search tool to work with globs for more flexible searches
308
- - Improved error handling in configuration and initializers
309
- - Fixed and simplified interpolation examples
310
-
311
- ### Fixed
312
- - Better error messages for search file tool
313
- - Improved initializer loading and error handling
314
- - Fixed tests for nested .roast folders
315
-
316
- [0.1.6]: https://github.com/Shopify/roast/compare/v0.1.5...v0.1.6
317
-
318
- ## [0.1.5] - 2024-05-13
319
-
320
- ### Added
321
- - Interpolation feature for dynamic workflows using `{{}}` syntax
322
- - Support for injecting values from workflow context into step names and commands
323
- - Ability to access file metadata and step outputs using interpolation expressions
324
- - Examples demonstrating interpolation usage with different file types
325
-
326
- [0.1.5]: https://github.com/Shopify/roast/releases/tag/v0.1.5
327
-
328
- ## [0.1.4] - 2024-05-13
329
-
330
- ### Fixed
331
- - Remove test directory restriction from WriteTool. (Thank you @endoze)
332
-
333
- [0.1.4]: https://github.com/Shopify/roast/releases/tag/v0.1.4
334
-
335
-
336
- ## [0.1.3] - 2024-05-12
337
-
338
- ### Fixed
339
- - ReadFile tool now handles absolute and relative paths correctly
340
-
341
- [0.1.3]: https://github.com/Shopify/roast/releases/tag/v0.1.3
342
-
343
-
344
- ## [0.1.2] - 2024-05-09
345
-
346
- ### Fixed
347
- - problem with step loading using `--replay` option
348
- - made access to `workflow.output` more robust by using hash with indifferent access
349
-
350
- [0.1.2]: https://github.com/Shopify/roast/releases/tag/v0.1.2
351
-
352
- ## [0.1.1] - 2024-05-09
353
-
354
- ### Added
355
- - Initial public release of Roast, extracted from Shopify's internal AI orchestration tools
356
- - Core workflow execution engine for structured AI interactions
357
- - Step-based workflow definition system
358
- - Instrumentation hooks for monitoring and debugging
359
- - Integration with various LLM providers (via [Raix](https://github.com/OlympiaAI/raix))
360
- - Schema validation for workflow inputs and outputs
361
- - Command-line interface for running workflows
362
- - Comprehensive documentation and examples
363
-
364
- [0.1.1]: https://github.com/Shopify/roast/releases/tag/v0.1.1