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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yaml +3 -1
- data/.gitignore +7 -0
- data/.rubocop.yml +14 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +9 -1
- data/Rakefile +16 -4
- data/examples/README.md +9 -0
- data/examples/available_tools_demo/workflow.yml +2 -2
- data/examples/basic_prompt_workflow/workflow.md +1 -0
- data/examples/basic_prompt_workflow/workflow.yml +14 -0
- data/lib/roast/dsl/executor.rb +2 -1
- data/lib/roast/helpers/cmd_runner.rb +199 -0
- data/lib/roast/initializers.rb +1 -1
- data/lib/roast/tools/apply_diff.rb +1 -1
- data/lib/roast/tools/bash.rb +4 -4
- data/lib/roast/tools/cmd.rb +3 -5
- data/lib/roast/tools/coding_agent.rb +1 -1
- data/lib/roast/tools/grep.rb +6 -2
- data/lib/roast/tools/read_file.rb +2 -1
- data/lib/roast/tools/swarm.rb +2 -7
- data/lib/roast/tools.rb +10 -1
- data/lib/roast/version.rb +1 -1
- data/lib/roast/workflow/base_step.rb +2 -3
- data/lib/roast/workflow/command_executor.rb +3 -3
- data/lib/roast/workflow/resource_resolver.rb +1 -1
- data/lib/roast/workflow/shell_script_step.rb +1 -1
- data/lib/roast/workflow/step_loader.rb +2 -7
- data/lib/roast.rb +7 -1
- data/rubocop/cop/roast/use_cmd_runner.rb +93 -0
- data/rubocop/cop/roast.rb +4 -0
- data/sorbet/rbi/gems/docile@1.4.1.rbi +377 -0
- data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +233 -2
- data/sorbet/rbi/gems/racc@1.8.1.rbi +6 -4
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +396 -2
- data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3788 -2
- data/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +7747 -2
- data/sorbet/rbi/gems/rubocop-sorbet@0.10.5.rbi +2386 -0
- data/sorbet/rbi/gems/rubocop@1.77.0.rbi +62813 -2
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1311 -2
- data/sorbet/rbi/gems/simplecov-html@0.13.2.rbi +225 -0
- data/sorbet/rbi/gems/simplecov@0.22.0.rbi +2259 -0
- data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +9 -0
- data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +125 -2
- data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +244 -2
- data/sorbet/tapioca/require.rb +2 -1
- metadata +12 -240
- data/CHANGELOG.md +0 -364
- data/examples/agent_continue/add_documentation/prompt.md +0 -5
- data/examples/agent_continue/add_error_handling/prompt.md +0 -5
- data/examples/agent_continue/analyze_codebase/prompt.md +0 -7
- data/examples/agent_continue/combined_workflow.yml +0 -24
- data/examples/agent_continue/continue_adding_features/prompt.md +0 -4
- data/examples/agent_continue/create_integration_tests/prompt.md +0 -3
- data/examples/agent_continue/document_with_context/prompt.md +0 -5
- data/examples/agent_continue/explore_api/prompt.md +0 -6
- data/examples/agent_continue/implement_client/prompt.md +0 -6
- data/examples/agent_continue/inline_workflow.yml +0 -20
- data/examples/agent_continue/refactor_code/prompt.md +0 -2
- data/examples/agent_continue/verify_changes/prompt.md +0 -6
- data/examples/agent_continue/workflow.yml +0 -27
- data/examples/agent_workflow/README.md +0 -75
- data/examples/agent_workflow/apply_refactorings/prompt.md +0 -22
- data/examples/agent_workflow/identify_code_smells/prompt.md +0 -15
- data/examples/agent_workflow/summarize_improvements/prompt.md +0 -18
- data/examples/agent_workflow/workflow.png +0 -0
- data/examples/agent_workflow/workflow.yml +0 -16
- data/examples/api_workflow/README.md +0 -85
- data/examples/api_workflow/fetch_api_data/prompt.md +0 -10
- data/examples/api_workflow/generate_report/prompt.md +0 -10
- data/examples/api_workflow/prompt.md +0 -10
- data/examples/api_workflow/transform_data/prompt.md +0 -10
- data/examples/api_workflow/workflow.png +0 -0
- data/examples/api_workflow/workflow.yml +0 -30
- data/examples/apply_diff_demo/README.md +0 -58
- data/examples/apply_diff_demo/apply_simple_change/prompt.md +0 -13
- data/examples/apply_diff_demo/create_sample_file/prompt.md +0 -11
- data/examples/apply_diff_demo/workflow.yml +0 -24
- data/examples/available_tools_demo/workflow.png +0 -0
- data/examples/bash_prototyping/README.md +0 -53
- data/examples/bash_prototyping/analyze_network/prompt.md +0 -13
- data/examples/bash_prototyping/analyze_system/prompt.md +0 -11
- data/examples/bash_prototyping/api_testing.png +0 -0
- data/examples/bash_prototyping/api_testing.yml +0 -14
- data/examples/bash_prototyping/check_processes/prompt.md +0 -11
- data/examples/bash_prototyping/generate_report/prompt.md +0 -16
- data/examples/bash_prototyping/process_json_response/prompt.md +0 -24
- data/examples/bash_prototyping/system_analysis.png +0 -0
- data/examples/bash_prototyping/system_analysis.yml +0 -14
- data/examples/bash_prototyping/test_public_api/prompt.md +0 -22
- data/examples/case_when/README.md +0 -58
- data/examples/case_when/detect_language/prompt.md +0 -16
- data/examples/case_when/workflow.png +0 -0
- data/examples/case_when/workflow.yml +0 -58
- data/examples/cmd/README.md +0 -99
- data/examples/cmd/analyze_project/prompt.md +0 -57
- data/examples/cmd/basic_demo/prompt.md +0 -48
- data/examples/cmd/basic_workflow.png +0 -0
- data/examples/cmd/basic_workflow.yml +0 -17
- data/examples/cmd/check_repository/prompt.md +0 -57
- data/examples/cmd/create_and_verify/prompt.md +0 -56
- data/examples/cmd/dev_workflow.png +0 -0
- data/examples/cmd/dev_workflow.yml +0 -26
- data/examples/cmd/explore_project/prompt.md +0 -67
- data/examples/cmd/explorer_workflow.png +0 -0
- data/examples/cmd/explorer_workflow.yml +0 -21
- data/examples/cmd/smart_tool_selection/prompt.md +0 -99
- data/examples/coding_agent_with_model.yml +0 -20
- data/examples/coding_agent_with_retries.yml +0 -30
- data/examples/conditional/README.md +0 -161
- data/examples/conditional/check_condition/prompt.md +0 -1
- data/examples/conditional/simple_workflow.png +0 -0
- data/examples/conditional/simple_workflow.yml +0 -15
- data/examples/conditional/workflow.png +0 -0
- data/examples/conditional/workflow.yml +0 -23
- data/examples/context_management_demo/README.md +0 -43
- data/examples/context_management_demo/workflow.yml +0 -42
- data/examples/direct_coerce_syntax/README.md +0 -32
- data/examples/direct_coerce_syntax/workflow.png +0 -0
- data/examples/direct_coerce_syntax/workflow.yml +0 -36
- data/examples/dot_notation/README.md +0 -37
- data/examples/dot_notation/workflow.png +0 -0
- data/examples/dot_notation/workflow.yml +0 -44
- data/examples/exit_on_error/README.md +0 -50
- data/examples/exit_on_error/analyze_lint_output/prompt.md +0 -9
- data/examples/exit_on_error/apply_fixes/prompt.md +0 -2
- data/examples/exit_on_error/workflow.png +0 -0
- data/examples/exit_on_error/workflow.yml +0 -19
- data/examples/grading/README.md +0 -71
- data/examples/grading/analyze_coverage/prompt.md +0 -52
- data/examples/grading/calculate_final_grade.rb +0 -67
- data/examples/grading/format_result.rb +0 -64
- data/examples/grading/generate_grades/prompt.md +0 -105
- data/examples/grading/generate_recommendations/output.txt +0 -17
- data/examples/grading/generate_recommendations/prompt.md +0 -60
- data/examples/grading/js_test_runner +0 -31
- data/examples/grading/rb_test_runner +0 -19
- data/examples/grading/read_dependencies/prompt.md +0 -16
- data/examples/grading/run_coverage.rb +0 -54
- data/examples/grading/verify_mocks_and_stubs/prompt.md +0 -12
- data/examples/grading/verify_test_helpers/prompt.md +0 -53
- data/examples/grading/workflow.md +0 -8
- data/examples/grading/workflow.png +0 -0
- data/examples/grading/workflow.rb.md +0 -6
- data/examples/grading/workflow.ts+tsx.md +0 -6
- data/examples/grading/workflow.yml +0 -41
- data/examples/instrumentation.rb +0 -76
- data/examples/interpolation/README.md +0 -50
- data/examples/interpolation/analyze_file/prompt.md +0 -1
- data/examples/interpolation/analyze_patterns/prompt.md +0 -27
- data/examples/interpolation/generate_report_for_js/prompt.md +0 -3
- data/examples/interpolation/generate_report_for_rb/prompt.md +0 -3
- data/examples/interpolation/sample.js +0 -48
- data/examples/interpolation/sample.rb +0 -42
- data/examples/interpolation/workflow.md +0 -1
- data/examples/interpolation/workflow.png +0 -0
- data/examples/interpolation/workflow.yml +0 -21
- data/examples/iteration/IMPLEMENTATION.md +0 -88
- data/examples/iteration/README.md +0 -68
- data/examples/iteration/analyze_complexity/prompt.md +0 -22
- data/examples/iteration/generate_recommendations/prompt.md +0 -21
- data/examples/iteration/generate_report/prompt.md +0 -129
- data/examples/iteration/implement_fix/prompt.md +0 -25
- data/examples/iteration/prioritize_issues/prompt.md +0 -24
- data/examples/iteration/prompts/analyze_file.md +0 -28
- data/examples/iteration/prompts/generate_summary.md +0 -24
- data/examples/iteration/prompts/update_report.md +0 -29
- data/examples/iteration/prompts/write_report.md +0 -22
- data/examples/iteration/read_file/prompt.md +0 -9
- data/examples/iteration/select_next_issue/prompt.md +0 -25
- data/examples/iteration/simple_workflow.md +0 -39
- data/examples/iteration/simple_workflow.yml +0 -58
- data/examples/iteration/update_fix_count/prompt.md +0 -26
- data/examples/iteration/verify_fix/prompt.md +0 -29
- data/examples/iteration/workflow.png +0 -0
- data/examples/iteration/workflow.yml +0 -42
- data/examples/json_handling/README.md +0 -32
- data/examples/json_handling/workflow.png +0 -0
- data/examples/json_handling/workflow.yml +0 -52
- data/examples/mcp/README.md +0 -223
- data/examples/mcp/analyze_changes/prompt.md +0 -8
- data/examples/mcp/analyze_issues/prompt.md +0 -4
- data/examples/mcp/analyze_schema/prompt.md +0 -4
- data/examples/mcp/check_data_quality/prompt.md +0 -5
- data/examples/mcp/check_documentation/prompt.md +0 -4
- data/examples/mcp/create_recommendations/prompt.md +0 -5
- data/examples/mcp/database_workflow.png +0 -0
- data/examples/mcp/database_workflow.yml +0 -29
- data/examples/mcp/env_demo/workflow.png +0 -0
- data/examples/mcp/env_demo/workflow.yml +0 -34
- data/examples/mcp/fetch_pr_context/prompt.md +0 -4
- data/examples/mcp/filesystem_demo/create_test_file/prompt.md +0 -2
- data/examples/mcp/filesystem_demo/list_files/prompt.md +0 -6
- data/examples/mcp/filesystem_demo/read_with_mcp/prompt.md +0 -7
- data/examples/mcp/filesystem_demo/workflow.png +0 -0
- data/examples/mcp/filesystem_demo/workflow.yml +0 -38
- data/examples/mcp/generate_insights/prompt.md +0 -4
- data/examples/mcp/generate_report/prompt.md +0 -6
- data/examples/mcp/generate_review/prompt.md +0 -16
- data/examples/mcp/github_workflow.png +0 -0
- data/examples/mcp/github_workflow.yml +0 -32
- data/examples/mcp/multi_mcp_workflow.png +0 -0
- data/examples/mcp/multi_mcp_workflow.yml +0 -58
- data/examples/mcp/post_review/prompt.md +0 -3
- data/examples/mcp/save_report/prompt.md +0 -6
- data/examples/mcp/search_issues/prompt.md +0 -2
- data/examples/mcp/summarize/prompt.md +0 -1
- data/examples/mcp/test_filesystem/prompt.md +0 -6
- data/examples/mcp/test_github/prompt.md +0 -8
- data/examples/mcp/test_read/prompt.md +0 -1
- data/examples/mcp/workflow.png +0 -0
- data/examples/mcp/workflow.yml +0 -35
- data/examples/no_model_fallback/README.md +0 -17
- data/examples/no_model_fallback/analyze_file/prompt.md +0 -1
- data/examples/no_model_fallback/analyze_patterns/prompt.md +0 -27
- data/examples/no_model_fallback/generate_report_for_md/prompt.md +0 -10
- data/examples/no_model_fallback/generate_report_for_rb/prompt.md +0 -3
- data/examples/no_model_fallback/sample.rb +0 -42
- data/examples/no_model_fallback/workflow.yml +0 -19
- data/examples/openrouter_example/README.md +0 -48
- data/examples/openrouter_example/analyze_input/prompt.md +0 -16
- data/examples/openrouter_example/generate_response/prompt.md +0 -9
- data/examples/openrouter_example/workflow.png +0 -0
- data/examples/openrouter_example/workflow.yml +0 -12
- data/examples/pre_post_processing/README.md +0 -111
- data/examples/pre_post_processing/analyze_test_file/prompt.md +0 -23
- data/examples/pre_post_processing/improve_test_coverage/prompt.md +0 -17
- data/examples/pre_post_processing/optimize_test_performance/prompt.md +0 -25
- data/examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md +0 -31
- data/examples/pre_post_processing/post_processing/cleanup_environment/prompt.md +0 -28
- data/examples/pre_post_processing/post_processing/generate_summary_report/prompt.md +0 -32
- data/examples/pre_post_processing/post_processing/output.txt +0 -24
- data/examples/pre_post_processing/pre_processing/gather_baseline_metrics/prompt.md +0 -26
- data/examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md +0 -11
- data/examples/pre_post_processing/validate_changes/prompt.md +0 -24
- data/examples/pre_post_processing/workflow.png +0 -0
- data/examples/pre_post_processing/workflow.yml +0 -21
- data/examples/retry/workflow.yml +0 -23
- data/examples/rspec_to_minitest/README.md +0 -68
- data/examples/rspec_to_minitest/analyze_spec/prompt.md +0 -30
- data/examples/rspec_to_minitest/create_minitest/prompt.md +0 -33
- data/examples/rspec_to_minitest/run_and_improve/prompt.md +0 -35
- data/examples/rspec_to_minitest/workflow.md +0 -10
- data/examples/rspec_to_minitest/workflow.png +0 -0
- data/examples/rspec_to_minitest/workflow.yml +0 -40
- data/examples/shared_config/README.md +0 -52
- data/examples/shared_config/example_with_shared_config/workflow.png +0 -0
- data/examples/shared_config/example_with_shared_config/workflow.yml +0 -6
- data/examples/shared_config/shared.png +0 -0
- data/examples/shared_config/shared.yml +0 -7
- data/examples/single_target_prepost/README.md +0 -36
- data/examples/single_target_prepost/post_processing/output.txt +0 -27
- data/examples/single_target_prepost/pre_processing/gather_dependencies/prompt.md +0 -11
- data/examples/single_target_prepost/workflow.png +0 -0
- data/examples/single_target_prepost/workflow.yml +0 -20
- data/examples/smart_coercion_defaults/README.md +0 -65
- data/examples/smart_coercion_defaults/workflow.png +0 -0
- data/examples/smart_coercion_defaults/workflow.yml +0 -44
- data/examples/step_configuration/README.md +0 -84
- data/examples/step_configuration/workflow.png +0 -0
- data/examples/step_configuration/workflow.yml +0 -57
- data/examples/swarm_example.yml +0 -25
- data/examples/tool_config_example/README.md +0 -109
- data/examples/tool_config_example/example_step/prompt.md +0 -42
- data/examples/tool_config_example/workflow.png +0 -0
- data/examples/tool_config_example/workflow.yml +0 -17
- data/examples/user_input/README.md +0 -90
- data/examples/user_input/funny_name/create_backstory/prompt.md +0 -10
- data/examples/user_input/funny_name/workflow.png +0 -0
- data/examples/user_input/funny_name/workflow.yml +0 -26
- data/examples/user_input/generate_summary/prompt.md +0 -11
- data/examples/user_input/simple_input_demo/workflow.png +0 -0
- data/examples/user_input/simple_input_demo/workflow.yml +0 -35
- data/examples/user_input/survey_workflow.png +0 -0
- data/examples/user_input/survey_workflow.yml +0 -71
- data/examples/user_input/welcome_message/prompt.md +0 -3
- data/examples/user_input/workflow.png +0 -0
- data/examples/user_input/workflow.yml +0 -73
- data/examples/workflow_generator/README.md +0 -27
- data/examples/workflow_generator/analyze_user_request/prompt.md +0 -34
- data/examples/workflow_generator/create_workflow_files/prompt.md +0 -32
- data/examples/workflow_generator/get_user_input/prompt.md +0 -14
- data/examples/workflow_generator/info_from_roast.rb +0 -22
- data/examples/workflow_generator/workflow.png +0 -0
- data/examples/workflow_generator/workflow.yml +0 -34
- 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.
|
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/
|
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/
|
243
|
-
- examples/
|
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
|