roast-ai 0.4.7 → 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 (250) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/Rakefile +2 -0
  4. data/examples/README.md +9 -0
  5. data/examples/available_tools_demo/workflow.yml +1 -1
  6. data/examples/basic_prompt_workflow/workflow.md +1 -0
  7. data/examples/basic_prompt_workflow/workflow.yml +14 -0
  8. data/lib/roast/version.rb +1 -1
  9. data/lib/roast/workflow/base_step.rb +2 -3
  10. data/lib/roast/workflow/step_loader.rb +2 -7
  11. data/lib/roast.rb +6 -1
  12. metadata +4 -239
  13. data/CHANGELOG.md +0 -369
  14. data/examples/agent_continue/add_documentation/prompt.md +0 -5
  15. data/examples/agent_continue/add_error_handling/prompt.md +0 -5
  16. data/examples/agent_continue/analyze_codebase/prompt.md +0 -7
  17. data/examples/agent_continue/combined_workflow.yml +0 -24
  18. data/examples/agent_continue/continue_adding_features/prompt.md +0 -4
  19. data/examples/agent_continue/create_integration_tests/prompt.md +0 -3
  20. data/examples/agent_continue/document_with_context/prompt.md +0 -5
  21. data/examples/agent_continue/explore_api/prompt.md +0 -6
  22. data/examples/agent_continue/implement_client/prompt.md +0 -6
  23. data/examples/agent_continue/inline_workflow.yml +0 -20
  24. data/examples/agent_continue/refactor_code/prompt.md +0 -2
  25. data/examples/agent_continue/verify_changes/prompt.md +0 -6
  26. data/examples/agent_continue/workflow.yml +0 -27
  27. data/examples/agent_workflow/README.md +0 -75
  28. data/examples/agent_workflow/apply_refactorings/prompt.md +0 -22
  29. data/examples/agent_workflow/identify_code_smells/prompt.md +0 -15
  30. data/examples/agent_workflow/summarize_improvements/prompt.md +0 -18
  31. data/examples/agent_workflow/workflow.png +0 -0
  32. data/examples/agent_workflow/workflow.yml +0 -16
  33. data/examples/api_workflow/README.md +0 -85
  34. data/examples/api_workflow/fetch_api_data/prompt.md +0 -10
  35. data/examples/api_workflow/generate_report/prompt.md +0 -10
  36. data/examples/api_workflow/prompt.md +0 -10
  37. data/examples/api_workflow/transform_data/prompt.md +0 -10
  38. data/examples/api_workflow/workflow.png +0 -0
  39. data/examples/api_workflow/workflow.yml +0 -30
  40. data/examples/apply_diff_demo/README.md +0 -58
  41. data/examples/apply_diff_demo/apply_simple_change/prompt.md +0 -13
  42. data/examples/apply_diff_demo/create_sample_file/prompt.md +0 -11
  43. data/examples/apply_diff_demo/workflow.yml +0 -24
  44. data/examples/available_tools_demo/workflow.png +0 -0
  45. data/examples/bash_prototyping/README.md +0 -53
  46. data/examples/bash_prototyping/analyze_network/prompt.md +0 -13
  47. data/examples/bash_prototyping/analyze_system/prompt.md +0 -11
  48. data/examples/bash_prototyping/api_testing.png +0 -0
  49. data/examples/bash_prototyping/api_testing.yml +0 -14
  50. data/examples/bash_prototyping/check_processes/prompt.md +0 -11
  51. data/examples/bash_prototyping/generate_report/prompt.md +0 -16
  52. data/examples/bash_prototyping/process_json_response/prompt.md +0 -24
  53. data/examples/bash_prototyping/system_analysis.png +0 -0
  54. data/examples/bash_prototyping/system_analysis.yml +0 -14
  55. data/examples/bash_prototyping/test_public_api/prompt.md +0 -22
  56. data/examples/case_when/README.md +0 -58
  57. data/examples/case_when/detect_language/prompt.md +0 -16
  58. data/examples/case_when/workflow.png +0 -0
  59. data/examples/case_when/workflow.yml +0 -58
  60. data/examples/cmd/README.md +0 -99
  61. data/examples/cmd/analyze_project/prompt.md +0 -57
  62. data/examples/cmd/basic_demo/prompt.md +0 -48
  63. data/examples/cmd/basic_workflow.png +0 -0
  64. data/examples/cmd/basic_workflow.yml +0 -16
  65. data/examples/cmd/check_repository/prompt.md +0 -57
  66. data/examples/cmd/create_and_verify/prompt.md +0 -56
  67. data/examples/cmd/dev_workflow.png +0 -0
  68. data/examples/cmd/dev_workflow.yml +0 -26
  69. data/examples/cmd/explore_project/prompt.md +0 -67
  70. data/examples/cmd/explorer_workflow.png +0 -0
  71. data/examples/cmd/explorer_workflow.yml +0 -21
  72. data/examples/cmd/smart_tool_selection/prompt.md +0 -99
  73. data/examples/coding_agent_with_model.yml +0 -20
  74. data/examples/coding_agent_with_retries.yml +0 -30
  75. data/examples/conditional/README.md +0 -161
  76. data/examples/conditional/check_condition/prompt.md +0 -1
  77. data/examples/conditional/simple_workflow.png +0 -0
  78. data/examples/conditional/simple_workflow.yml +0 -15
  79. data/examples/conditional/workflow.png +0 -0
  80. data/examples/conditional/workflow.yml +0 -23
  81. data/examples/context_management_demo/README.md +0 -43
  82. data/examples/context_management_demo/workflow.yml +0 -42
  83. data/examples/direct_coerce_syntax/README.md +0 -32
  84. data/examples/direct_coerce_syntax/workflow.png +0 -0
  85. data/examples/direct_coerce_syntax/workflow.yml +0 -36
  86. data/examples/dot_notation/README.md +0 -37
  87. data/examples/dot_notation/workflow.png +0 -0
  88. data/examples/dot_notation/workflow.yml +0 -44
  89. data/examples/exit_on_error/README.md +0 -50
  90. data/examples/exit_on_error/analyze_lint_output/prompt.md +0 -9
  91. data/examples/exit_on_error/apply_fixes/prompt.md +0 -2
  92. data/examples/exit_on_error/workflow.png +0 -0
  93. data/examples/exit_on_error/workflow.yml +0 -19
  94. data/examples/grading/README.md +0 -71
  95. data/examples/grading/analyze_coverage/prompt.md +0 -52
  96. data/examples/grading/calculate_final_grade.rb +0 -67
  97. data/examples/grading/format_result.rb +0 -64
  98. data/examples/grading/generate_grades/prompt.md +0 -105
  99. data/examples/grading/generate_recommendations/output.txt +0 -17
  100. data/examples/grading/generate_recommendations/prompt.md +0 -60
  101. data/examples/grading/js_test_runner +0 -31
  102. data/examples/grading/rb_test_runner +0 -19
  103. data/examples/grading/read_dependencies/prompt.md +0 -16
  104. data/examples/grading/run_coverage.rb +0 -54
  105. data/examples/grading/verify_mocks_and_stubs/prompt.md +0 -12
  106. data/examples/grading/verify_test_helpers/prompt.md +0 -53
  107. data/examples/grading/workflow.md +0 -8
  108. data/examples/grading/workflow.png +0 -0
  109. data/examples/grading/workflow.rb.md +0 -6
  110. data/examples/grading/workflow.ts+tsx.md +0 -6
  111. data/examples/grading/workflow.yml +0 -41
  112. data/examples/instrumentation.rb +0 -76
  113. data/examples/interpolation/README.md +0 -50
  114. data/examples/interpolation/analyze_file/prompt.md +0 -1
  115. data/examples/interpolation/analyze_patterns/prompt.md +0 -27
  116. data/examples/interpolation/generate_report_for_js/prompt.md +0 -3
  117. data/examples/interpolation/generate_report_for_rb/prompt.md +0 -3
  118. data/examples/interpolation/sample.js +0 -48
  119. data/examples/interpolation/sample.rb +0 -42
  120. data/examples/interpolation/workflow.md +0 -1
  121. data/examples/interpolation/workflow.png +0 -0
  122. data/examples/interpolation/workflow.yml +0 -21
  123. data/examples/iteration/IMPLEMENTATION.md +0 -88
  124. data/examples/iteration/README.md +0 -68
  125. data/examples/iteration/analyze_complexity/prompt.md +0 -22
  126. data/examples/iteration/generate_recommendations/prompt.md +0 -21
  127. data/examples/iteration/generate_report/prompt.md +0 -129
  128. data/examples/iteration/implement_fix/prompt.md +0 -25
  129. data/examples/iteration/prioritize_issues/prompt.md +0 -24
  130. data/examples/iteration/prompts/analyze_file.md +0 -28
  131. data/examples/iteration/prompts/generate_summary.md +0 -24
  132. data/examples/iteration/prompts/update_report.md +0 -29
  133. data/examples/iteration/prompts/write_report.md +0 -22
  134. data/examples/iteration/read_file/prompt.md +0 -9
  135. data/examples/iteration/select_next_issue/prompt.md +0 -25
  136. data/examples/iteration/simple_workflow.md +0 -39
  137. data/examples/iteration/simple_workflow.yml +0 -58
  138. data/examples/iteration/update_fix_count/prompt.md +0 -26
  139. data/examples/iteration/verify_fix/prompt.md +0 -29
  140. data/examples/iteration/workflow.png +0 -0
  141. data/examples/iteration/workflow.yml +0 -42
  142. data/examples/json_handling/README.md +0 -32
  143. data/examples/json_handling/workflow.png +0 -0
  144. data/examples/json_handling/workflow.yml +0 -52
  145. data/examples/mcp/README.md +0 -223
  146. data/examples/mcp/analyze_changes/prompt.md +0 -8
  147. data/examples/mcp/analyze_issues/prompt.md +0 -4
  148. data/examples/mcp/analyze_schema/prompt.md +0 -4
  149. data/examples/mcp/check_data_quality/prompt.md +0 -5
  150. data/examples/mcp/check_documentation/prompt.md +0 -4
  151. data/examples/mcp/create_recommendations/prompt.md +0 -5
  152. data/examples/mcp/database_workflow.png +0 -0
  153. data/examples/mcp/database_workflow.yml +0 -29
  154. data/examples/mcp/env_demo/workflow.png +0 -0
  155. data/examples/mcp/env_demo/workflow.yml +0 -34
  156. data/examples/mcp/fetch_pr_context/prompt.md +0 -4
  157. data/examples/mcp/filesystem_demo/create_test_file/prompt.md +0 -2
  158. data/examples/mcp/filesystem_demo/list_files/prompt.md +0 -6
  159. data/examples/mcp/filesystem_demo/read_with_mcp/prompt.md +0 -7
  160. data/examples/mcp/filesystem_demo/workflow.png +0 -0
  161. data/examples/mcp/filesystem_demo/workflow.yml +0 -38
  162. data/examples/mcp/generate_insights/prompt.md +0 -4
  163. data/examples/mcp/generate_report/prompt.md +0 -6
  164. data/examples/mcp/generate_review/prompt.md +0 -16
  165. data/examples/mcp/github_workflow.png +0 -0
  166. data/examples/mcp/github_workflow.yml +0 -32
  167. data/examples/mcp/multi_mcp_workflow.png +0 -0
  168. data/examples/mcp/multi_mcp_workflow.yml +0 -58
  169. data/examples/mcp/post_review/prompt.md +0 -3
  170. data/examples/mcp/save_report/prompt.md +0 -6
  171. data/examples/mcp/search_issues/prompt.md +0 -2
  172. data/examples/mcp/summarize/prompt.md +0 -1
  173. data/examples/mcp/test_filesystem/prompt.md +0 -6
  174. data/examples/mcp/test_github/prompt.md +0 -8
  175. data/examples/mcp/test_read/prompt.md +0 -1
  176. data/examples/mcp/workflow.png +0 -0
  177. data/examples/mcp/workflow.yml +0 -35
  178. data/examples/no_model_fallback/README.md +0 -17
  179. data/examples/no_model_fallback/analyze_file/prompt.md +0 -1
  180. data/examples/no_model_fallback/analyze_patterns/prompt.md +0 -27
  181. data/examples/no_model_fallback/generate_report_for_md/prompt.md +0 -10
  182. data/examples/no_model_fallback/generate_report_for_rb/prompt.md +0 -3
  183. data/examples/no_model_fallback/sample.rb +0 -42
  184. data/examples/no_model_fallback/workflow.yml +0 -19
  185. data/examples/openrouter_example/README.md +0 -48
  186. data/examples/openrouter_example/analyze_input/prompt.md +0 -16
  187. data/examples/openrouter_example/generate_response/prompt.md +0 -9
  188. data/examples/openrouter_example/workflow.png +0 -0
  189. data/examples/openrouter_example/workflow.yml +0 -12
  190. data/examples/pre_post_processing/README.md +0 -111
  191. data/examples/pre_post_processing/analyze_test_file/prompt.md +0 -23
  192. data/examples/pre_post_processing/improve_test_coverage/prompt.md +0 -17
  193. data/examples/pre_post_processing/optimize_test_performance/prompt.md +0 -25
  194. data/examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md +0 -31
  195. data/examples/pre_post_processing/post_processing/cleanup_environment/prompt.md +0 -28
  196. data/examples/pre_post_processing/post_processing/generate_summary_report/prompt.md +0 -32
  197. data/examples/pre_post_processing/post_processing/output.txt +0 -24
  198. data/examples/pre_post_processing/pre_processing/gather_baseline_metrics/prompt.md +0 -26
  199. data/examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md +0 -11
  200. data/examples/pre_post_processing/validate_changes/prompt.md +0 -24
  201. data/examples/pre_post_processing/workflow.png +0 -0
  202. data/examples/pre_post_processing/workflow.yml +0 -21
  203. data/examples/retry/workflow.yml +0 -23
  204. data/examples/rspec_to_minitest/README.md +0 -68
  205. data/examples/rspec_to_minitest/analyze_spec/prompt.md +0 -30
  206. data/examples/rspec_to_minitest/create_minitest/prompt.md +0 -33
  207. data/examples/rspec_to_minitest/run_and_improve/prompt.md +0 -35
  208. data/examples/rspec_to_minitest/workflow.md +0 -10
  209. data/examples/rspec_to_minitest/workflow.png +0 -0
  210. data/examples/rspec_to_minitest/workflow.yml +0 -40
  211. data/examples/shared_config/README.md +0 -52
  212. data/examples/shared_config/example_with_shared_config/workflow.png +0 -0
  213. data/examples/shared_config/example_with_shared_config/workflow.yml +0 -6
  214. data/examples/shared_config/shared.png +0 -0
  215. data/examples/shared_config/shared.yml +0 -7
  216. data/examples/single_target_prepost/README.md +0 -36
  217. data/examples/single_target_prepost/post_processing/output.txt +0 -27
  218. data/examples/single_target_prepost/pre_processing/gather_dependencies/prompt.md +0 -11
  219. data/examples/single_target_prepost/workflow.png +0 -0
  220. data/examples/single_target_prepost/workflow.yml +0 -20
  221. data/examples/smart_coercion_defaults/README.md +0 -65
  222. data/examples/smart_coercion_defaults/workflow.png +0 -0
  223. data/examples/smart_coercion_defaults/workflow.yml +0 -44
  224. data/examples/step_configuration/README.md +0 -84
  225. data/examples/step_configuration/workflow.png +0 -0
  226. data/examples/step_configuration/workflow.yml +0 -57
  227. data/examples/swarm_example.yml +0 -25
  228. data/examples/tool_config_example/README.md +0 -109
  229. data/examples/tool_config_example/example_step/prompt.md +0 -42
  230. data/examples/tool_config_example/workflow.png +0 -0
  231. data/examples/tool_config_example/workflow.yml +0 -17
  232. data/examples/user_input/README.md +0 -90
  233. data/examples/user_input/funny_name/create_backstory/prompt.md +0 -10
  234. data/examples/user_input/funny_name/workflow.png +0 -0
  235. data/examples/user_input/funny_name/workflow.yml +0 -25
  236. data/examples/user_input/generate_summary/prompt.md +0 -11
  237. data/examples/user_input/simple_input_demo/workflow.png +0 -0
  238. data/examples/user_input/simple_input_demo/workflow.yml +0 -35
  239. data/examples/user_input/survey_workflow.png +0 -0
  240. data/examples/user_input/survey_workflow.yml +0 -71
  241. data/examples/user_input/welcome_message/prompt.md +0 -3
  242. data/examples/user_input/workflow.png +0 -0
  243. data/examples/user_input/workflow.yml +0 -73
  244. data/examples/workflow_generator/README.md +0 -27
  245. data/examples/workflow_generator/analyze_user_request/prompt.md +0 -34
  246. data/examples/workflow_generator/create_workflow_files/prompt.md +0 -32
  247. data/examples/workflow_generator/get_user_input/prompt.md +0 -14
  248. data/examples/workflow_generator/info_from_roast.rb +0 -22
  249. data/examples/workflow_generator/workflow.png +0 -0
  250. data/examples/workflow_generator/workflow.yml +0 -34
data/CHANGELOG.md DELETED
@@ -1,369 +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.7]
9
-
10
- ### Fixed
11
- - Infinite loop if `.roast` directory can't be found. (#382)
12
-
13
- ## [0.4.6]
14
-
15
- ### Added
16
- - Step retries
17
-
18
- ### Fixed
19
- - Tokens containing whitespace
20
-
21
- ## [0.4.5]
22
-
23
- ### Added
24
- - **Sorbet static type checking** (#359, #360, #362)
25
- - Initial setup of Sorbet for static type analysis
26
- - Added `bin/srb tc` command for type checking
27
- - Gradually adding type signatures to improve code safety and navigation
28
- - Fixed invalid constants that were undefined and never reached
29
- - Added to CI pipeline for continuous type checking
30
- - **Workflow name in step event payloads** (#333, #351)
31
- - Added `workflow_name` field to all step-related ActiveSupport::Notification events
32
- - Enables better tracking of which workflow a step belongs to in monitoring systems
33
- - Updated events: `roast.step.start`, `roast.step.complete`, `roast.step.error`
34
-
35
- ### Changed
36
- - **Improved error output formatting** (#358)
37
- - Error messages now show concise output by default (just the error message)
38
- - Full exception details and stack traces only shown in verbose mode (`-v`)
39
- - Makes error output cleaner and more user-friendly
40
- - **Consolidated workflow runner architecture** (#355)
41
- - Merged ConfigurationParser functionality into WorkflowRunner for better cohesion
42
- - Simplified the codebase by removing redundant abstraction layers
43
-
44
- ### Fixed
45
- - **Removed duplicated pre/post processing code** (#357)
46
- - Extracted common pre/post processing logic from individual step executors
47
- - Eliminated code duplication across different step types
48
- - Improved maintainability and consistency
49
-
50
- ## [0.4.3] - 2025-07-10
51
-
52
- ### Changed
53
- - **Updated to raix-openai-eight gem** - Upgraded from `raix` to `raix-openai-eight` gem which supports OpenAI Ruby client v8.1
54
-
55
- ## [0.4.2] - 2025-06-20
56
-
57
- ### Added
58
- - **Multiline bash command support** (#289)
59
- - Enhanced CommandExecutor to properly handle commands spanning multiple lines
60
- - Enables sophisticated bash scripts in workflow steps
61
- - Maintains backward compatibility with single-line commands
62
- - **Comprehensive shell security enhancements** (#289)
63
- - Smart interpolation that detects shell commands and escapes dangerous characters
64
- - Protection against shell injection for all major metacharacters:
65
- - Backslashes (`\`) to prevent path injection
66
- - Double quotes (`"`) to prevent breaking quoted contexts
67
- - Dollar signs (`$`) to prevent variable expansion
68
- - Backticks (`` ` ``) to prevent command substitution
69
- - Context-aware escaping only in shell commands, preserving text elsewhere
70
- - **Early detection for missing Raix configuration** (#292)
71
- - Provides helpful error messages when Raix is not properly initialized
72
- - Shows example configuration for both OpenAI and OpenRouter
73
- - Prevents cryptic "undefined method 'chat' for nil" errors
74
- - **Exit early feature for input steps** (#291)
75
- - Pressing Ctrl-C during input steps now exits cleanly
76
- - No more confusing stack traces when canceling input
77
- - **Default --dangerously-skip-permissions flag for CodingAgent** (#290)
78
- - Avoids permission prompts during automated workflows
79
- - Improves workflow automation experience
80
-
81
- ### Fixed
82
- - Test isolation issue causing CI failures (#289)
83
- - Flaky test in StepExecutorRegistryTest due to executor registration conflicts (#289)
84
- - Shell command interpolation security vulnerabilities (#289)
85
- - Missing dependency declarations (cli-kit, sqlite3) (#292)
86
-
87
- ### Changed
88
- - Updated cli-kit dependency to ~> 5.0 for better error handling
89
- - Updated sqlite3 dependency to ~> 2.6 to resolve version conflicts
90
-
91
- [0.4.2]: https://github.com/Shopify/roast/compare/v0.4.1...v0.4.2
92
-
93
- ## [0.4.1] - 2025-06-18
94
-
95
- ### Added
96
- - **SQLite session storage** as the default storage backend (#252)
97
- - Provides better performance and advanced querying capabilities
98
- - Sessions are stored in `~/.roast/sessions.db` by default (configurable via `ROAST_SESSIONS_DB`)
99
- - New `roast sessions` command to list and filter stored sessions
100
- - New `roast session <id>` command to view detailed session information
101
- - Session cleanup with `roast sessions --cleanup --older-than <duration>`
102
- - Filter sessions by status, workflow name, or age
103
- - Maintains full backward compatibility with filesystem storage
104
- - **`--file-storage` CLI option** to use legacy filesystem storage instead of SQLite
105
- - Use `-f` or `--file-storage` flag to opt into filesystem storage
106
- - Environment variable `ROAST_STATE_STORAGE=file` still supported for compatibility
107
- - **Foundation for wait_for_event feature** (#251)
108
- - New `roast resume` command infrastructure for resuming paused workflows
109
- - Event storage and tracking in SQLite sessions table
110
- - **Configurable agent step options** for CodingAgent (#266)
111
- - New `continue` option for agent steps to maintain session context across multiple agent invocations
112
- - New `include_context_summary` option to provide AI-generated workflow context summaries to agents
113
- - Context summaries are intelligently tailored to the agent's specific task using LLM analysis
114
- - Helps reduce token usage by including only relevant context information
115
- - **Token consumption reporting** for step execution (#264)
116
- - Displays token usage (prompt and completion) after each step execution
117
- - Helps users monitor and optimize their LLM token consumption
118
- - Automatically enabled for all workflow runs
119
- - **Timeout functionality for bash and cmd steps** (#261)
120
- - New `timeout` option for bash and cmd steps to prevent hanging commands
121
- - Configurable timeout duration in seconds
122
- - Commands are automatically terminated if they exceed the specified timeout
123
- - Prevents workflows from getting stuck on unresponsive commands
124
- - **Claude Swarm tool integration** (#254)
125
- - New `Roast::Tools::Swarm` for integrating with Claude Swarm framework
126
- - Enables using Swarm's multi-agent orchestration capabilities within Roast workflows
127
- - Provides seamless handoffs between specialized AI agents
128
- - **Workflow visualization with diagram command** (#256)
129
- - New `roast diagram` command to generate visual representations of workflows
130
- - Creates GraphViz-based diagrams showing workflow structure and flow
131
- - Supports both DOT format output and PNG/SVG image generation
132
- - Helps understand complex workflow logic at a glance
133
- - **Comprehensive workflow validation** (#244)
134
- - New `roast validate` command to check workflow syntax and structure
135
- - Validates YAML syntax, step references, and configuration options
136
- - Provides detailed error messages for invalid workflows
137
- - Helps catch errors before running workflows
138
- - **apply_diff tool** (#246)
139
- - New built-in tool for applying unified diff patches to files
140
- - Supports standard diff format for making precise file modifications
141
- - Enables AI models to suggest changes in diff format
142
- - More reliable than search-and-replace for complex edits
143
- - **Model fallback mechanism** (#257)
144
- - Workflows without explicit model configuration now use a sensible default
145
- - Prevents errors when model is not specified at workflow or step level
146
- - Improves user experience for simple workflows
147
- - **Context management foundation for auto-compaction** (#264)
148
- - Infrastructure for future automatic context size management
149
- - Enables intelligent token usage optimization in long-running workflows
150
-
151
- ### Changed
152
- - Session storage now defaults to SQLite instead of filesystem
153
- - Existing filesystem sessions remain accessible when using `--file-storage` flag
154
- - No migration required - both storage backends can coexist
155
-
156
- [0.4.1]: https://github.com/Shopify/roast/compare/v0.4.0...v0.4.1
157
-
158
- ## [0.4.0] - 2025-06-12
159
-
160
- ### Added
161
- - **Input step type** for collecting user input during workflow execution (#154)
162
- - Interactive prompts pause workflow execution to collect user input
163
- - Supports multiple input types: `text` (default), `confirm`, `select`, and `password`
164
- - `confirm` type provides yes/no prompts with boolean results
165
- - `select` type allows choosing from a list of options
166
- - `password` type masks input for sensitive data using io/console
167
- - Input values are stored in workflow output and accessible via dot notation (e.g., `{{output.step_name}}`)
168
- - Integrates with CLI::UI for consistent formatting and user experience
169
- - **Agent step type** for direct pass-through to coding agents (#151)
170
- - Steps prefixed with `^` send prompts directly to the CodingAgent tool
171
- - Supports both file-based and inline agent prompts
172
- - Bypasses LLM interpretation for precise agent instructions
173
-
174
- ### Fixed
175
- - DotAccessHash array wrapping and template response handling
176
- - CLI::UI formatting and color handling for better terminal output
177
-
178
- ## [0.3.1] - 2025-06-05
179
-
180
- ### Added
181
- - Default `print_response: true` for the last step in a workflow (#100)
182
- - The last step now automatically prints its response unless explicitly configured otherwise
183
- - Helps newcomers who would otherwise see no output from their workflows
184
- - Works with all step types: string steps, hash steps with variable assignment, and conditional steps
185
- - Parallel steps and iteration steps are intelligently handled (no automatic output since there's no single "last" step)
186
-
187
- ### Fixed
188
- - PromptStep now properly passes `print_response`, `json`, and `params` parameters to chat_completion
189
-
190
- ## [0.3.0] - 2025-06-04
191
-
192
- ### Changed
193
- - **BREAKING**: Upgraded to Raix 1.0.0 (#141)
194
- - Removed the deprecated `loop` parameter from chat_completion calls
195
- - Raix 1.0 automatically continues after tool calls until providing a text response
196
- - All chat completions now return strings (no longer arrays or complex structures)
197
- - JSON responses are automatically parsed when `json: true` is specified
198
- - **BREAKING**: Removed configurable `loop` and `auto_loop` options from workflow configuration (#140)
199
- - The `loop:` and `auto_loop:` YAML configuration options have been removed entirely
200
- - Looping behavior is now automatic: always enabled when tools are present, disabled when no tools exist
201
- - This simplifies the codebase and makes behavior more predictable
202
- - To migrate: remove any `loop: true/false` or `auto_loop: true/false` settings from your workflow YAML files
203
-
204
- ### Fixed
205
- - Enhanced boolean coercion to treat empty strings as false
206
- - Improved iterable coercion to handle JSON array strings
207
- - Fixed all tests to work with Raix 1.0's string-only responses
208
-
209
- ## [0.2.3] - 2025-05-29
210
-
211
- ### Fixed
212
- - Model inheritance for nested steps in iteration steps (#105)
213
- - Nested steps within `repeat` and `each` blocks now properly inherit model configuration
214
- - Configuration hierarchy works correctly: step-specific → workflow-level → default model
215
- - Previously, nested steps always used the default model regardless of configuration
216
-
217
- ## [0.2.2] - 2025-05-29
218
-
219
- ### Added
220
- - Pre/post processing framework for workflows with `pre_processing` and `post_processing` sections (#86)
221
- - Support for `output.txt` ERB templates in post-processing phase for custom output formatting
222
- - Pre/post processing support for single-target workflows (not just multi-target)
223
- - Simplified access to pre-processing data in target workflows (removed `output` intermediary level)
224
- - Verbose mode improvements for better debugging experience (#98)
225
- - Command outputs are now displayed when using the `--verbose` flag
226
- - Commands executed within conditional branches also show output in verbose mode
227
- - User-friendly error reporting for workflow failures (#98)
228
- - Clear ❌ indicators when commands or steps fail
229
- - Command failures show exit status and output (no verbose needed for failures)
230
- - Step failures provide helpful context about what might be wrong
231
- - Exit handler displays actionable suggestions for resolving issues
232
- - Automatic workflow discovery by name (#97)
233
- - Can now run workflows by name without full path: `roast execute my_workflow`
234
- - Automatically looks for `roast/my_workflow/workflow.yml` in current directory
235
- - Configurable base URI for API endpoints (#83)
236
-
237
- ### Fixed
238
- - Search file tool now correctly prefixes paths when searching (#92)
239
- - Support for Ruby projects using ActiveSupport 7.0+ (#95)
240
-
241
- ### Changed
242
- - ActiveSupport dependency relaxed to >= 7.0 for broader compatibility
243
-
244
- ## [0.2.1]
245
-
246
- ### Added
247
- - Smart coercion defaults for boolean expressions based on step type
248
- - Ruby expressions (`{{expr}}`) default to regular boolean coercion
249
- - Bash commands (`$(cmd)`) default to exit code interpretation
250
- - Inline prompts and regular steps default to "smart" LLM-powered interpretation (looks for truthy or falsy language)
251
- - Direct syntax for step configuration - `coerce_to` and other options are now specified directly on iteration steps
252
-
253
- ## [0.2.0] - 2025-05-26
254
-
255
- ### Added
256
- - Conditional execution support with `if` and `unless` clauses for workflow steps
257
- - Iteration mechanisms for workflows with `repeat` and `each` constructs (resolving issue #48)
258
- - Support for conditional repetition with `until` condition and safety limits
259
- - Collection iteration with variable binding for processing lists of items
260
- - State persistence for loop iterations to enable resumption after failure
261
- - Standardized evaluation of Ruby expressions in iteration constructs using `{{}}` syntax
262
- - Support for using bash commands, step names, and Ruby expressions in iteration conditions and collections
263
- - Intelligent LLM response to boolean conversion with pattern-based recognition for natural language responses
264
- - `exit_on_error` configuration option for command steps to continue workflow on failure (resolving issue #71)
265
- - Dot notation access for workflow outputs (e.g., `workflow.output.step.field`)
266
- - `--pause` flag for stepping through workflow execution interactively
267
-
268
- ### Fixed
269
- - Automatically add `.gitignore` file to cache directory when created (completing issue #22)
270
- - Load initializers before trying to load tools in case custom tools are defined in initializers (thanks @palkan)
271
- - Fix loading of targetless workflows (thanks @palkan)
272
- - Fix OpenRouter support (thanks @xrendan)
273
- - API authentication error handling and model access issues
274
- - Conditional step transcript replay regression
275
- - DotAccessHash serialization for AI prompts
276
-
277
- ### Improved
278
- - Enhanced search file tool logging to show full expanded paths instead of relative paths
279
- - Major refactoring to eliminate circular dependencies and improve architecture
280
- - Extracted command execution logic into dedicated CommandExecutor class
281
- - Separated conditional execution from iteration logic for better SOLID compliance
282
- - Enhanced error messages for API authentication failures
283
- - Replaced all `require_relative` with `require` statements for consistency
284
-
285
- ### Changed
286
- - Refactored god objects to improve code organization and maintainability
287
- - Improved separation of concerns between workflow components
288
-
289
- [0.2.0]: https://github.com/Shopify/roast/compare/v0.1.7...v0.2.0
290
-
291
- ## [0.1.7] - 2024-05-16
292
-
293
- ### Added
294
- - `UpdateFiles` tool for applying diffs/patches to multiple files at once
295
- - Support for atomic file updates with rollback capability
296
- - Comprehensive documentation for all built-in tools
297
- - Enhanced README with detailed tool usage examples
298
-
299
- ``[0.1.7]: https://github.com/Shopify/roast/compare/v0.1.6...v0.1.7
300
-
301
- ## [0.1.6] - 2024-05-15
302
-
303
- ### Added
304
- - Support for OpenRouter as an API provider
305
- - `api_provider` configuration option allowing choice between OpenAI and OpenRouter
306
- - Added separate CI rake task for improved build pipeline
307
- - Version command to check current Roast version
308
- - Walking up to home folder for config root
309
- - Improved initializer support for better project configuration
310
-
311
- ### Changed
312
- - Enhanced search tool to work with globs for more flexible searches
313
- - Improved error handling in configuration and initializers
314
- - Fixed and simplified interpolation examples
315
-
316
- ### Fixed
317
- - Better error messages for search file tool
318
- - Improved initializer loading and error handling
319
- - Fixed tests for nested .roast folders
320
-
321
- [0.1.6]: https://github.com/Shopify/roast/compare/v0.1.5...v0.1.6
322
-
323
- ## [0.1.5] - 2024-05-13
324
-
325
- ### Added
326
- - Interpolation feature for dynamic workflows using `{{}}` syntax
327
- - Support for injecting values from workflow context into step names and commands
328
- - Ability to access file metadata and step outputs using interpolation expressions
329
- - Examples demonstrating interpolation usage with different file types
330
-
331
- [0.1.5]: https://github.com/Shopify/roast/releases/tag/v0.1.5
332
-
333
- ## [0.1.4] - 2024-05-13
334
-
335
- ### Fixed
336
- - Remove test directory restriction from WriteTool. (Thank you @endoze)
337
-
338
- [0.1.4]: https://github.com/Shopify/roast/releases/tag/v0.1.4
339
-
340
-
341
- ## [0.1.3] - 2024-05-12
342
-
343
- ### Fixed
344
- - ReadFile tool now handles absolute and relative paths correctly
345
-
346
- [0.1.3]: https://github.com/Shopify/roast/releases/tag/v0.1.3
347
-
348
-
349
- ## [0.1.2] - 2024-05-09
350
-
351
- ### Fixed
352
- - problem with step loading using `--replay` option
353
- - made access to `workflow.output` more robust by using hash with indifferent access
354
-
355
- [0.1.2]: https://github.com/Shopify/roast/releases/tag/v0.1.2
356
-
357
- ## [0.1.1] - 2024-05-09
358
-
359
- ### Added
360
- - Initial public release of Roast, extracted from Shopify's internal AI orchestration tools
361
- - Core workflow execution engine for structured AI interactions
362
- - Step-based workflow definition system
363
- - Instrumentation hooks for monitoring and debugging
364
- - Integration with various LLM providers (via [Raix](https://github.com/OlympiaAI/raix))
365
- - Schema validation for workflow inputs and outputs
366
- - Command-line interface for running workflows
367
- - Comprehensive documentation and examples
368
-
369
- [0.1.1]: https://github.com/Shopify/roast/releases/tag/v0.1.1
@@ -1,5 +0,0 @@
1
- Add documentation to the refactored code.
2
- Include:
3
- - Method documentation
4
- - Class-level documentation
5
- - Usage examples where appropriate
@@ -1,5 +0,0 @@
1
- Enhance the GitHub client with comprehensive error handling:
2
- - Network errors
3
- - Authentication failures
4
- - Rate limit exceeded
5
- - API validation errors
@@ -1,7 +0,0 @@
1
- Analyze this Ruby codebase and identify areas that could benefit from refactoring.
2
- Focus on:
3
- - Code duplication
4
- - Complex methods that could be simplified
5
- - Missing abstractions
6
-
7
- Create a list of suggested improvements.
@@ -1,24 +0,0 @@
1
- description: Example combining both continue and context summary features
2
-
3
- # This example shows how both parameters can work together for complex workflows
4
-
5
- steps:
6
- # Initial exploration
7
- - explore_api
8
-
9
- # First coding agent task
10
- - ^implement_client
11
-
12
- # Continue with context awareness
13
- - ^add_error_handling
14
-
15
- # Final implementation with full context
16
- - ^create_integration_tests
17
-
18
- add_error_handling:
19
- continue: true # Continue working on the same client
20
- include_context_summary: true # Include context about what was explored and built
21
-
22
- create_integration_tests:
23
- continue: true # Continue in the same session
24
- include_context_summary: true # Full context of implementation
@@ -1,4 +0,0 @@
1
- Now add these additional features to the todo list class:
2
- - Mark items as complete
3
- - Filter by status (complete/incomplete)
4
- - Save to and load from a JSON file
@@ -1,3 +0,0 @@
1
- Create integration tests for the GitHub client.
2
- Test all the functionality including error scenarios.
3
- Use VCR for recording API interactions.
@@ -1,5 +0,0 @@
1
- Based on what has been implemented so far, create a comprehensive README.md file that includes:
2
- - Overview of the TodoList class
3
- - All available methods and their usage
4
- - Code examples
5
- - Installation instructions
@@ -1,6 +0,0 @@
1
- Explore the GitHub API and document:
2
- - Key endpoints for repository management
3
- - Authentication requirements
4
- - Rate limiting considerations
5
-
6
- Format as a structured summary.
@@ -1,6 +0,0 @@
1
- Create a Ruby client for the GitHub API that includes:
2
- - Basic authentication
3
- - Repository listing
4
- - Repository creation
5
-
6
- Use the information from the API exploration.
@@ -1,20 +0,0 @@
1
- description: Example workflow using inline agent prompts with continuation
2
-
3
- # This example demonstrates using inline agent prompts (direct text after ^)
4
- # combined with the new parameters
5
-
6
- steps:
7
- # Start with a fresh context
8
- - ^Create a simple Ruby class for managing a todo list with add, remove, and list methods
9
-
10
- # Continue from previous session to add more features
11
- - ^continue_adding_features
12
-
13
- # Use context summary to understand what was built
14
- - ^document_with_context
15
-
16
- continue_adding_features:
17
- continue: true # This continues from the previous agent session
18
-
19
- document_with_context:
20
- include_context_summary: true # This will include context about previous steps
@@ -1,2 +0,0 @@
1
- Now implement the refactoring suggestions you identified.
2
- Start with the highest priority items.
@@ -1,6 +0,0 @@
1
- Review all the changes made by the coding agent steps.
2
- Provide a summary of:
3
- - What was analyzed
4
- - What refactorings were applied
5
- - What documentation was added
6
- - Any potential issues or concerns
@@ -1,27 +0,0 @@
1
- description: Example workflow demonstrating agent continuation and context summary features
2
-
3
- # This example shows how to use the new coding agent parameters:
4
- # - continue: true - continues from previous agent session
5
- # - include_context_summary: true - includes workflow context in the prompt
6
-
7
- target: "**/*.rb"
8
-
9
- steps:
10
- # First agent step - starts fresh
11
- - ^analyze_codebase
12
-
13
- # Second agent step - continues from previous session
14
- - ^refactor_code
15
-
16
- # Third agent step - includes context summary from previous steps
17
- - ^add_documentation
18
-
19
- # Final verification step
20
- - verify_changes
21
-
22
- # Step configurations
23
- refactor_code:
24
- continue: true # Continue from the previous agent session
25
-
26
- add_documentation:
27
- include_context_summary: true # Include workflow context in the prompt
@@ -1,75 +0,0 @@
1
- # Agent Workflow Example
2
-
3
- This example demonstrates the practical differences between regular steps and agent steps in Roast workflows.
4
-
5
- ## What are Agent Steps?
6
-
7
- Agent steps are a special type of step that sends prompts directly to the CodingAgent tool (e.g., Claude Code) without going through the normal LLM translation layer. They're denoted by prefixing the step name with `^`.
8
-
9
- ## When to Use Each Type
10
-
11
- ### Regular Steps
12
- Best for tasks that benefit from LLM interpretation:
13
- - Analysis and judgment tasks
14
- - Natural language understanding
15
- - Flexible responses based on context
16
- - Summary and explanation generation
17
-
18
- ### Agent Steps
19
- Best for tasks requiring precise tool control:
20
- - Exact code refactoring operations
21
- - Multi-file coordinated changes
22
- - Specific tool usage requirements
23
- - Performance-critical operations
24
-
25
- ## Workflow Structure
26
-
27
- This example demonstrates a code refactoring workflow:
28
-
29
- 1. **identify_code_smells** (Regular Step)
30
- - Analyzes code to identify issues
31
- - Uses LLM judgment to prioritize problems
32
- - Provides contextual explanations
33
-
34
- 2. **^apply_refactorings** (Agent Step)
35
- - Executes precise refactoring operations
36
- - Uses specific tools (Read, MultiEdit) directly
37
- - Follows exact formatting requirements
38
- - No interpretation needed - just execution
39
-
40
- 3. **summarize_improvements** (Regular Step)
41
- - Reviews all changes made
42
- - Generates human-friendly summary
43
- - Provides recommendations
44
-
45
- ## Running the Workflow
46
-
47
- ```bash
48
- # Run on all Ruby files in current directory
49
- roast execute examples/agent_workflow/workflow.yml
50
-
51
- # Run on specific files
52
- roast execute examples/agent_workflow/workflow.yml app/models/*.rb
53
- ```
54
-
55
- ## Key Differences in Practice
56
-
57
- ### Regular Step Example
58
- The `identify_code_smells` step benefits from LLM interpretation because:
59
- - It needs to understand "code smells" in context
60
- - It makes subjective judgments about code quality
61
- - It prioritizes issues based on impact
62
-
63
- ### Agent Step Example
64
- The `^apply_refactorings` step works better as an agent step because:
65
- - It requires specific tool usage (MultiEdit, not Write)
66
- - It needs exact preservation of formatting
67
- - It follows precise refactoring patterns
68
- - No interpretation is needed - just execution
69
-
70
- ## Benefits Demonstrated
71
-
72
- 1. **Complementary Strengths**: Regular steps handle analysis and planning, agent steps handle precise execution
73
- 2. **Better Performance**: Agent steps skip the LLM layer for well-defined tasks
74
- 3. **Predictable Results**: Agent steps execute exactly as specified
75
- 4. **Tool Control**: Agent steps can enforce specific tool usage patterns
@@ -1,22 +0,0 @@
1
- Based on the code smells identified in the previous step, apply the following refactorings:
2
-
3
- For each file that needs changes:
4
-
5
- 1. Use the Read tool to examine the current implementation
6
- 2. Use MultiEdit to apply all refactorings in a single operation per file
7
- 3. Ensure all changes maintain exact formatting and indentation
8
- 4. Focus on these specific refactorings:
9
- - Extract long methods (>15 lines) into smaller, focused methods
10
- - Replace magic numbers with named constants
11
- - Rename variables/methods that don't clearly express intent
12
- - Extract duplicate code into shared methods
13
- - Add proper error handling where missing
14
-
15
- Important constraints:
16
- - DO NOT change the public API of any class
17
- - DO NOT modify test files
18
- - DO NOT add comments unless replacing unclear code
19
- - Preserve all existing functionality
20
- - Use Ruby idioms and conventions
21
-
22
- After each file modification, verify the changes maintain the original behavior.
@@ -1,15 +0,0 @@
1
- Analyze the provided Ruby code and identify potential code smells or areas for improvement. Consider:
2
-
3
- 1. Method complexity and length
4
- 2. Duplicated code patterns
5
- 3. Poor naming conventions
6
- 4. Tight coupling between classes
7
- 5. Missing abstractions or violated SOLID principles
8
- 6. Performance anti-patterns
9
-
10
- For each issue found, explain:
11
- - What the problem is
12
- - Why it's problematic
13
- - A general approach to fix it
14
-
15
- Focus on the most impactful improvements that would enhance code maintainability and readability.
@@ -1,18 +0,0 @@
1
- Review the refactorings that were applied and provide a comprehensive summary that includes:
2
-
3
- 1. **Overview of Changes**
4
- - Number of files modified
5
- - Types of refactorings applied
6
- - Overall impact on code quality
7
-
8
- 2. **Key Improvements**
9
- - Most significant refactorings and their benefits
10
- - Complexity reductions achieved
11
- - Readability enhancements
12
-
13
- 3. **Recommendations for Future**
14
- - Any remaining code smells that require larger architectural changes
15
- - Suggested next steps for continued improvement
16
- - Areas that would benefit from additional test coverage
17
-
18
- Format the summary in a way that would be useful for a code review or team discussion.
Binary file
@@ -1,16 +0,0 @@
1
- description: Example workflow demonstrating agent steps
2
-
3
- # Agent steps send prompts directly to CodingAgent (e.g., Claude Code)
4
- # without the intermediate LLM translation layer
5
-
6
- target: "**/*.rb"
7
-
8
- steps:
9
- # Regular step - goes through LLM first for analysis and judgment
10
- - identify_code_smells
11
-
12
- # Agent step - direct to CodingAgent for precise refactoring
13
- - ^apply_refactorings
14
-
15
- # Regular step - verify changes and provide summary
16
- - summarize_improvements