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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/Rakefile +2 -0
- data/examples/README.md +9 -0
- data/examples/available_tools_demo/workflow.yml +1 -1
- data/examples/basic_prompt_workflow/workflow.md +1 -0
- data/examples/basic_prompt_workflow/workflow.yml +14 -0
- data/lib/roast/version.rb +1 -1
- data/lib/roast/workflow/base_step.rb +2 -3
- data/lib/roast/workflow/step_loader.rb +2 -7
- data/lib/roast.rb +6 -1
- metadata +4 -239
- data/CHANGELOG.md +0 -369
- 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 -16
- 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 -25
- 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/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,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,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,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
|