roast-ai 0.4.7 → 0.4.9

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 (311) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1 -0
  4. data/Gemfile.lock +3 -3
  5. data/README.md +9 -5
  6. data/Rakefile +2 -0
  7. data/dsl/less_simple.rb +112 -0
  8. data/dsl/prototype.rb +17 -0
  9. data/dsl/simple.rb +5 -7
  10. data/dsl/step_communication.rb +18 -0
  11. data/examples/README.md +9 -0
  12. data/examples/available_tools_demo/workflow.yml +1 -1
  13. data/examples/basic_prompt_workflow/workflow.md +1 -0
  14. data/examples/basic_prompt_workflow/workflow.yml +14 -0
  15. data/examples/grading/README.md +1 -26
  16. data/examples/grading/analyze_coverage/prompt.md +1 -1
  17. data/examples/grading/calculate_final_grade.rb +10 -13
  18. data/examples/grading/format_result.rb +5 -8
  19. data/examples/grading/generate_grades/prompt.md +1 -1
  20. data/examples/grading/generate_recommendations/prompt.md +1 -1
  21. data/examples/grading/read_dependencies/prompt.md +0 -1
  22. data/examples/grading/verify_test_helpers/prompt.md +1 -1
  23. data/examples/grading/workflow.md +1 -4
  24. data/examples/grading/workflow.yml +3 -16
  25. data/lib/roast/dsl/cog/config.rb +31 -0
  26. data/lib/roast/dsl/cog/stack.rb +21 -0
  27. data/lib/roast/dsl/cog/store.rb +26 -0
  28. data/lib/roast/dsl/cog.rb +70 -0
  29. data/lib/roast/dsl/cog_execution_context.rb +29 -0
  30. data/lib/roast/dsl/cogs/cmd.rb +55 -0
  31. data/lib/roast/dsl/cogs/graph.rb +53 -0
  32. data/lib/roast/dsl/cogs.rb +65 -0
  33. data/lib/roast/dsl/config_context.rb +54 -0
  34. data/lib/roast/dsl/executor.rb +62 -7
  35. data/lib/roast/dsl/workflow_execution_context.rb +47 -0
  36. data/lib/roast/error.rb +7 -0
  37. data/lib/roast/errors.rb +3 -3
  38. data/lib/roast/graph/edge.rb +25 -0
  39. data/lib/roast/graph/node.rb +40 -0
  40. data/lib/roast/graph/quantum_edge.rb +27 -0
  41. data/lib/roast/graph/threaded_exec.rb +93 -0
  42. data/lib/roast/graph.rb +233 -0
  43. data/lib/roast/resources/api_resource.rb +2 -2
  44. data/lib/roast/resources/url_resource.rb +2 -2
  45. data/lib/roast/tools/apply_diff.rb +1 -1
  46. data/lib/roast/tools/ask_user.rb +1 -1
  47. data/lib/roast/tools/bash.rb +1 -1
  48. data/lib/roast/tools/cmd.rb +2 -2
  49. data/lib/roast/tools/coding_agent.rb +2 -2
  50. data/lib/roast/tools/grep.rb +1 -1
  51. data/lib/roast/tools/read_file.rb +1 -1
  52. data/lib/roast/tools/search_file.rb +1 -1
  53. data/lib/roast/tools/swarm.rb +1 -1
  54. data/lib/roast/tools/update_files.rb +2 -2
  55. data/lib/roast/tools/write_file.rb +1 -1
  56. data/lib/roast/tools.rb +1 -1
  57. data/lib/roast/value_objects/api_token.rb +1 -1
  58. data/lib/roast/value_objects/uri_base.rb +1 -1
  59. data/lib/roast/value_objects/workflow_path.rb +1 -1
  60. data/lib/roast/version.rb +1 -1
  61. data/lib/roast/workflow/base_step.rb +2 -3
  62. data/lib/roast/workflow/base_workflow.rb +38 -2
  63. data/lib/roast/workflow/command_executor.rb +1 -1
  64. data/lib/roast/workflow/configuration_loader.rb +1 -1
  65. data/lib/roast/workflow/error_handler.rb +1 -1
  66. data/lib/roast/workflow/step_executor_registry.rb +1 -1
  67. data/lib/roast/workflow/step_loader.rb +3 -8
  68. data/lib/roast/workflow/workflow_executor.rb +1 -1
  69. data/lib/roast.rb +7 -2
  70. data/sorbet/config +2 -0
  71. data/sorbet/rbi/annotations/.gitattributes +1 -0
  72. data/sorbet/rbi/annotations/activesupport.rbi +495 -0
  73. data/sorbet/rbi/annotations/faraday.rbi +17 -0
  74. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  75. data/sorbet/rbi/annotations/mocha.rbi +34 -0
  76. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  77. data/sorbet/rbi/annotations/webmock.rbi +9 -0
  78. data/sorbet/rbi/gems/rbs-inline@0.12.0.rbi +2170 -0
  79. data/sorbet/rbi/gems/{rexml@3.4.1.rbi → rexml@3.4.2.rbi} +284 -239
  80. data/sorbet/rbi/shims/lib/roast/dsl/config_context.rbi +11 -0
  81. data/sorbet/rbi/shims/lib/roast/dsl/workflow_execution_context.rbi +11 -0
  82. data/sorbet/rbi/todo.rbi +7 -0
  83. metadata +37 -231
  84. data/CHANGELOG.md +0 -369
  85. data/examples/agent_continue/add_documentation/prompt.md +0 -5
  86. data/examples/agent_continue/add_error_handling/prompt.md +0 -5
  87. data/examples/agent_continue/analyze_codebase/prompt.md +0 -7
  88. data/examples/agent_continue/combined_workflow.yml +0 -24
  89. data/examples/agent_continue/continue_adding_features/prompt.md +0 -4
  90. data/examples/agent_continue/create_integration_tests/prompt.md +0 -3
  91. data/examples/agent_continue/document_with_context/prompt.md +0 -5
  92. data/examples/agent_continue/explore_api/prompt.md +0 -6
  93. data/examples/agent_continue/implement_client/prompt.md +0 -6
  94. data/examples/agent_continue/inline_workflow.yml +0 -20
  95. data/examples/agent_continue/refactor_code/prompt.md +0 -2
  96. data/examples/agent_continue/verify_changes/prompt.md +0 -6
  97. data/examples/agent_continue/workflow.yml +0 -27
  98. data/examples/agent_workflow/README.md +0 -75
  99. data/examples/agent_workflow/apply_refactorings/prompt.md +0 -22
  100. data/examples/agent_workflow/identify_code_smells/prompt.md +0 -15
  101. data/examples/agent_workflow/summarize_improvements/prompt.md +0 -18
  102. data/examples/agent_workflow/workflow.png +0 -0
  103. data/examples/agent_workflow/workflow.yml +0 -16
  104. data/examples/api_workflow/README.md +0 -85
  105. data/examples/api_workflow/fetch_api_data/prompt.md +0 -10
  106. data/examples/api_workflow/generate_report/prompt.md +0 -10
  107. data/examples/api_workflow/prompt.md +0 -10
  108. data/examples/api_workflow/transform_data/prompt.md +0 -10
  109. data/examples/api_workflow/workflow.png +0 -0
  110. data/examples/api_workflow/workflow.yml +0 -30
  111. data/examples/apply_diff_demo/README.md +0 -58
  112. data/examples/apply_diff_demo/apply_simple_change/prompt.md +0 -13
  113. data/examples/apply_diff_demo/create_sample_file/prompt.md +0 -11
  114. data/examples/apply_diff_demo/workflow.yml +0 -24
  115. data/examples/available_tools_demo/workflow.png +0 -0
  116. data/examples/bash_prototyping/README.md +0 -53
  117. data/examples/bash_prototyping/analyze_network/prompt.md +0 -13
  118. data/examples/bash_prototyping/analyze_system/prompt.md +0 -11
  119. data/examples/bash_prototyping/api_testing.png +0 -0
  120. data/examples/bash_prototyping/api_testing.yml +0 -14
  121. data/examples/bash_prototyping/check_processes/prompt.md +0 -11
  122. data/examples/bash_prototyping/generate_report/prompt.md +0 -16
  123. data/examples/bash_prototyping/process_json_response/prompt.md +0 -24
  124. data/examples/bash_prototyping/system_analysis.png +0 -0
  125. data/examples/bash_prototyping/system_analysis.yml +0 -14
  126. data/examples/bash_prototyping/test_public_api/prompt.md +0 -22
  127. data/examples/case_when/README.md +0 -58
  128. data/examples/case_when/detect_language/prompt.md +0 -16
  129. data/examples/case_when/workflow.png +0 -0
  130. data/examples/case_when/workflow.yml +0 -58
  131. data/examples/cmd/README.md +0 -99
  132. data/examples/cmd/analyze_project/prompt.md +0 -57
  133. data/examples/cmd/basic_demo/prompt.md +0 -48
  134. data/examples/cmd/basic_workflow.png +0 -0
  135. data/examples/cmd/basic_workflow.yml +0 -16
  136. data/examples/cmd/check_repository/prompt.md +0 -57
  137. data/examples/cmd/create_and_verify/prompt.md +0 -56
  138. data/examples/cmd/dev_workflow.png +0 -0
  139. data/examples/cmd/dev_workflow.yml +0 -26
  140. data/examples/cmd/explore_project/prompt.md +0 -67
  141. data/examples/cmd/explorer_workflow.png +0 -0
  142. data/examples/cmd/explorer_workflow.yml +0 -21
  143. data/examples/cmd/smart_tool_selection/prompt.md +0 -99
  144. data/examples/coding_agent_with_model.yml +0 -20
  145. data/examples/coding_agent_with_retries.yml +0 -30
  146. data/examples/conditional/README.md +0 -161
  147. data/examples/conditional/check_condition/prompt.md +0 -1
  148. data/examples/conditional/simple_workflow.png +0 -0
  149. data/examples/conditional/simple_workflow.yml +0 -15
  150. data/examples/conditional/workflow.png +0 -0
  151. data/examples/conditional/workflow.yml +0 -23
  152. data/examples/context_management_demo/README.md +0 -43
  153. data/examples/context_management_demo/workflow.yml +0 -42
  154. data/examples/direct_coerce_syntax/README.md +0 -32
  155. data/examples/direct_coerce_syntax/workflow.png +0 -0
  156. data/examples/direct_coerce_syntax/workflow.yml +0 -36
  157. data/examples/dot_notation/README.md +0 -37
  158. data/examples/dot_notation/workflow.png +0 -0
  159. data/examples/dot_notation/workflow.yml +0 -44
  160. data/examples/exit_on_error/README.md +0 -50
  161. data/examples/exit_on_error/analyze_lint_output/prompt.md +0 -9
  162. data/examples/exit_on_error/apply_fixes/prompt.md +0 -2
  163. data/examples/exit_on_error/workflow.png +0 -0
  164. data/examples/exit_on_error/workflow.yml +0 -19
  165. data/examples/grading/js_test_runner +0 -31
  166. data/examples/grading/rb_test_runner +0 -19
  167. data/examples/grading/run_coverage.rb +0 -54
  168. data/examples/grading/workflow.png +0 -0
  169. data/examples/grading/workflow.rb.md +0 -6
  170. data/examples/grading/workflow.ts+tsx.md +0 -6
  171. data/examples/instrumentation.rb +0 -76
  172. data/examples/interpolation/README.md +0 -50
  173. data/examples/interpolation/analyze_file/prompt.md +0 -1
  174. data/examples/interpolation/analyze_patterns/prompt.md +0 -27
  175. data/examples/interpolation/generate_report_for_js/prompt.md +0 -3
  176. data/examples/interpolation/generate_report_for_rb/prompt.md +0 -3
  177. data/examples/interpolation/sample.js +0 -48
  178. data/examples/interpolation/sample.rb +0 -42
  179. data/examples/interpolation/workflow.md +0 -1
  180. data/examples/interpolation/workflow.png +0 -0
  181. data/examples/interpolation/workflow.yml +0 -21
  182. data/examples/iteration/IMPLEMENTATION.md +0 -88
  183. data/examples/iteration/README.md +0 -68
  184. data/examples/iteration/analyze_complexity/prompt.md +0 -22
  185. data/examples/iteration/generate_recommendations/prompt.md +0 -21
  186. data/examples/iteration/generate_report/prompt.md +0 -129
  187. data/examples/iteration/implement_fix/prompt.md +0 -25
  188. data/examples/iteration/prioritize_issues/prompt.md +0 -24
  189. data/examples/iteration/prompts/analyze_file.md +0 -28
  190. data/examples/iteration/prompts/generate_summary.md +0 -24
  191. data/examples/iteration/prompts/update_report.md +0 -29
  192. data/examples/iteration/prompts/write_report.md +0 -22
  193. data/examples/iteration/read_file/prompt.md +0 -9
  194. data/examples/iteration/select_next_issue/prompt.md +0 -25
  195. data/examples/iteration/simple_workflow.md +0 -39
  196. data/examples/iteration/simple_workflow.yml +0 -58
  197. data/examples/iteration/update_fix_count/prompt.md +0 -26
  198. data/examples/iteration/verify_fix/prompt.md +0 -29
  199. data/examples/iteration/workflow.png +0 -0
  200. data/examples/iteration/workflow.yml +0 -42
  201. data/examples/json_handling/README.md +0 -32
  202. data/examples/json_handling/workflow.png +0 -0
  203. data/examples/json_handling/workflow.yml +0 -52
  204. data/examples/mcp/README.md +0 -223
  205. data/examples/mcp/analyze_changes/prompt.md +0 -8
  206. data/examples/mcp/analyze_issues/prompt.md +0 -4
  207. data/examples/mcp/analyze_schema/prompt.md +0 -4
  208. data/examples/mcp/check_data_quality/prompt.md +0 -5
  209. data/examples/mcp/check_documentation/prompt.md +0 -4
  210. data/examples/mcp/create_recommendations/prompt.md +0 -5
  211. data/examples/mcp/database_workflow.png +0 -0
  212. data/examples/mcp/database_workflow.yml +0 -29
  213. data/examples/mcp/env_demo/workflow.png +0 -0
  214. data/examples/mcp/env_demo/workflow.yml +0 -34
  215. data/examples/mcp/fetch_pr_context/prompt.md +0 -4
  216. data/examples/mcp/filesystem_demo/create_test_file/prompt.md +0 -2
  217. data/examples/mcp/filesystem_demo/list_files/prompt.md +0 -6
  218. data/examples/mcp/filesystem_demo/read_with_mcp/prompt.md +0 -7
  219. data/examples/mcp/filesystem_demo/workflow.png +0 -0
  220. data/examples/mcp/filesystem_demo/workflow.yml +0 -38
  221. data/examples/mcp/generate_insights/prompt.md +0 -4
  222. data/examples/mcp/generate_report/prompt.md +0 -6
  223. data/examples/mcp/generate_review/prompt.md +0 -16
  224. data/examples/mcp/github_workflow.png +0 -0
  225. data/examples/mcp/github_workflow.yml +0 -32
  226. data/examples/mcp/multi_mcp_workflow.png +0 -0
  227. data/examples/mcp/multi_mcp_workflow.yml +0 -58
  228. data/examples/mcp/post_review/prompt.md +0 -3
  229. data/examples/mcp/save_report/prompt.md +0 -6
  230. data/examples/mcp/search_issues/prompt.md +0 -2
  231. data/examples/mcp/summarize/prompt.md +0 -1
  232. data/examples/mcp/test_filesystem/prompt.md +0 -6
  233. data/examples/mcp/test_github/prompt.md +0 -8
  234. data/examples/mcp/test_read/prompt.md +0 -1
  235. data/examples/mcp/workflow.png +0 -0
  236. data/examples/mcp/workflow.yml +0 -35
  237. data/examples/no_model_fallback/README.md +0 -17
  238. data/examples/no_model_fallback/analyze_file/prompt.md +0 -1
  239. data/examples/no_model_fallback/analyze_patterns/prompt.md +0 -27
  240. data/examples/no_model_fallback/generate_report_for_md/prompt.md +0 -10
  241. data/examples/no_model_fallback/generate_report_for_rb/prompt.md +0 -3
  242. data/examples/no_model_fallback/sample.rb +0 -42
  243. data/examples/no_model_fallback/workflow.yml +0 -19
  244. data/examples/openrouter_example/README.md +0 -48
  245. data/examples/openrouter_example/analyze_input/prompt.md +0 -16
  246. data/examples/openrouter_example/generate_response/prompt.md +0 -9
  247. data/examples/openrouter_example/workflow.png +0 -0
  248. data/examples/openrouter_example/workflow.yml +0 -12
  249. data/examples/pre_post_processing/README.md +0 -111
  250. data/examples/pre_post_processing/analyze_test_file/prompt.md +0 -23
  251. data/examples/pre_post_processing/improve_test_coverage/prompt.md +0 -17
  252. data/examples/pre_post_processing/optimize_test_performance/prompt.md +0 -25
  253. data/examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md +0 -31
  254. data/examples/pre_post_processing/post_processing/cleanup_environment/prompt.md +0 -28
  255. data/examples/pre_post_processing/post_processing/generate_summary_report/prompt.md +0 -32
  256. data/examples/pre_post_processing/post_processing/output.txt +0 -24
  257. data/examples/pre_post_processing/pre_processing/gather_baseline_metrics/prompt.md +0 -26
  258. data/examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md +0 -11
  259. data/examples/pre_post_processing/validate_changes/prompt.md +0 -24
  260. data/examples/pre_post_processing/workflow.png +0 -0
  261. data/examples/pre_post_processing/workflow.yml +0 -21
  262. data/examples/retry/workflow.yml +0 -23
  263. data/examples/rspec_to_minitest/README.md +0 -68
  264. data/examples/rspec_to_minitest/analyze_spec/prompt.md +0 -30
  265. data/examples/rspec_to_minitest/create_minitest/prompt.md +0 -33
  266. data/examples/rspec_to_minitest/run_and_improve/prompt.md +0 -35
  267. data/examples/rspec_to_minitest/workflow.md +0 -10
  268. data/examples/rspec_to_minitest/workflow.png +0 -0
  269. data/examples/rspec_to_minitest/workflow.yml +0 -40
  270. data/examples/shared_config/README.md +0 -52
  271. data/examples/shared_config/example_with_shared_config/workflow.png +0 -0
  272. data/examples/shared_config/example_with_shared_config/workflow.yml +0 -6
  273. data/examples/shared_config/shared.png +0 -0
  274. data/examples/shared_config/shared.yml +0 -7
  275. data/examples/single_target_prepost/README.md +0 -36
  276. data/examples/single_target_prepost/post_processing/output.txt +0 -27
  277. data/examples/single_target_prepost/pre_processing/gather_dependencies/prompt.md +0 -11
  278. data/examples/single_target_prepost/workflow.png +0 -0
  279. data/examples/single_target_prepost/workflow.yml +0 -20
  280. data/examples/smart_coercion_defaults/README.md +0 -65
  281. data/examples/smart_coercion_defaults/workflow.png +0 -0
  282. data/examples/smart_coercion_defaults/workflow.yml +0 -44
  283. data/examples/step_configuration/README.md +0 -84
  284. data/examples/step_configuration/workflow.png +0 -0
  285. data/examples/step_configuration/workflow.yml +0 -57
  286. data/examples/swarm_example.yml +0 -25
  287. data/examples/tool_config_example/README.md +0 -109
  288. data/examples/tool_config_example/example_step/prompt.md +0 -42
  289. data/examples/tool_config_example/workflow.png +0 -0
  290. data/examples/tool_config_example/workflow.yml +0 -17
  291. data/examples/user_input/README.md +0 -90
  292. data/examples/user_input/funny_name/create_backstory/prompt.md +0 -10
  293. data/examples/user_input/funny_name/workflow.png +0 -0
  294. data/examples/user_input/funny_name/workflow.yml +0 -25
  295. data/examples/user_input/generate_summary/prompt.md +0 -11
  296. data/examples/user_input/simple_input_demo/workflow.png +0 -0
  297. data/examples/user_input/simple_input_demo/workflow.yml +0 -35
  298. data/examples/user_input/survey_workflow.png +0 -0
  299. data/examples/user_input/survey_workflow.yml +0 -71
  300. data/examples/user_input/welcome_message/prompt.md +0 -3
  301. data/examples/user_input/workflow.png +0 -0
  302. data/examples/user_input/workflow.yml +0 -73
  303. data/examples/workflow_generator/README.md +0 -27
  304. data/examples/workflow_generator/analyze_user_request/prompt.md +0 -34
  305. data/examples/workflow_generator/create_workflow_files/prompt.md +0 -32
  306. data/examples/workflow_generator/get_user_input/prompt.md +0 -14
  307. data/examples/workflow_generator/info_from_roast.rb +0 -22
  308. data/examples/workflow_generator/workflow.png +0 -0
  309. data/examples/workflow_generator/workflow.yml +0 -34
  310. data/package-lock.json +0 -6
  311. /data/sorbet/rbi/gems/{rack@2.2.17.rbi → rack@2.2.18.rbi} +0 -0
@@ -1,4 +0,0 @@
1
- Using the GitDocs tool:
2
- 1. Find relevant documentation for the changed code
3
- 2. Determine if documentation updates are needed
4
- 3. Suggest specific documentation changes if required
@@ -1,5 +0,0 @@
1
- Create a final report with:
2
- 1. Database health summary
3
- 2. Critical issues that need immediate attention
4
- 3. Performance optimization recommendations
5
- 4. Data quality improvement suggestions
Binary file
@@ -1,29 +0,0 @@
1
- # MCP Database Integration Example
2
- # This workflow demonstrates using a PostgreSQL MCP server for database operations
3
-
4
- name: Database Analysis Workflow
5
- model: gpt-4o-mini
6
-
7
- tools:
8
- # PostgreSQL MCP tool
9
- - Database:
10
- command: npx
11
- args:
12
- - "-y"
13
- - "@modelcontextprotocol/server-postgres"
14
- env:
15
- DATABASE_URL: "{{ENV['DATABASE_URL']}}"
16
- only:
17
- - query
18
- - list_tables
19
- - describe_table
20
- - get_schema
21
-
22
- steps:
23
- - analyze_schema
24
- - check_data_quality
25
- - generate_insights
26
- - create_recommendations
27
-
28
- create_recommendations:
29
- print_response: true
Binary file
@@ -1,34 +0,0 @@
1
- # Environment Variable Interpolation Demo
2
- # This shows how ENV variables are interpolated in MCP tool configurations
3
-
4
- name: ENV Interpolation Demo
5
- model: o4-mini
6
-
7
- tools:
8
- - Roast::Tools::ReadFile
9
-
10
- # Filesystem MCP with interpolated path
11
- # The user's home directory will be resolved from ENV['HOME']
12
- - UserFiles:
13
- command: npx
14
- args: ["-y", "@modelcontextprotocol/server-filesystem", "{{ENV['HOME'] || '/tmp'}}"]
15
- only:
16
- - list_directory
17
- - get_file_info
18
-
19
- steps:
20
- - show_env: |
21
- First, tell me what user is running this workflow. The current user is: {{ENV['USER'] || 'unknown'}}
22
- And their home directory is: {{ENV['HOME'] || 'not set'}}
23
-
24
- - list_home: |
25
- Now use the UserFiles MCP tool's list_directory function to list the user's home directory.
26
- Just show the first 5-10 items you find.
27
-
28
-
29
- show_env:
30
- print_response: true
31
-
32
- list_home:
33
- model: gpt-4o-mini
34
- print_response: true
@@ -1,4 +0,0 @@
1
- Using the GitHub tool, fetch details about PR #<%= ENV['PR_NUMBER'] %>:
2
- 1. Get the PR description and title
3
- 2. List all changed files
4
- 3. Identify the type of changes (feature, bugfix, refactor)
@@ -1,2 +0,0 @@
1
- First, use the read_file Roast tool to read this workflow file itself (examples/mcp/filesystem_demo/workflow.yml).
2
- This is just to verify traditional tools work and show the content of the workflow.
@@ -1,6 +0,0 @@
1
- Use the FileSystem MCP tool's list_directory function to list the contents of the /tmp directory.
2
-
3
- The function expects these parameters:
4
- - path: "/tmp"
5
-
6
- Show me what files and directories are in /tmp.
@@ -1,7 +0,0 @@
1
- If you found any .txt, .md, or .log files in /tmp from the previous step, pick one and read it using the
2
- FileSystem MCP tool's read_file function.
3
-
4
- The function expects these parameters:
5
- - path: (the full path to the file you want to read)
6
-
7
- If no suitable text files were found, just say "No text files found in /tmp to read".
@@ -1,38 +0,0 @@
1
- # Filesystem MCP Example
2
- # This uses the filesystem MCP server which provides safe file operations
3
-
4
- name: Filesystem MCP Example
5
- model: gpt-4o-mini
6
-
7
- tools:
8
- # Traditional Roast tools
9
- - Roast::Tools::ReadFile
10
-
11
- # Filesystem MCP server
12
- - FileSystem:
13
- command: npx
14
- args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
15
- only:
16
- - read_file
17
- - list_directory
18
- - get_file_info
19
-
20
- steps:
21
- - create_test_file
22
- - list_files
23
- - read_with_mcp
24
-
25
- create_test_file:
26
- prompt: |
27
- First, use the read_file Roast tool to read this workflow file itself (examples/mcp/filesystem_demo/workflow.yml).
28
- This is just to verify traditional tools work.
29
-
30
- list_files:
31
- prompt: |
32
- Use the FileSystem MCP tool's list_directory function to list the contents of the /tmp directory.
33
- The function expects a "path" parameter with value "/tmp".
34
-
35
- read_with_mcp:
36
- prompt: |
37
- If you see any .txt or .md files in /tmp from the previous step, try reading one with the
38
- FileSystem MCP tool's read_file function. Otherwise, just say "No text files found in /tmp".
@@ -1,4 +0,0 @@
1
- Based on the schema and data quality analysis:
2
- 1. Identify the most important tables for business operations
3
- 2. Find opportunities for optimization (indexes, denormalization, etc.)
4
- 3. Suggest data cleanup tasks if needed
@@ -1,6 +0,0 @@
1
- Generate a comprehensive bug analysis report that includes:
2
- - Total number of open bug issues
3
- - Categorization of bugs by type
4
- - List of critical issues
5
- - Recommendations for prioritization
6
- - Suggested next steps for the development team
@@ -1,16 +0,0 @@
1
- Generate a structured code review with:
2
- {
3
- "summary": "Overall assessment",
4
- "approval_status": "approve|request_changes|comment",
5
- "issues": [
6
- {
7
- "severity": "critical|major|minor",
8
- "file": "filename",
9
- "line": 123,
10
- "description": "Issue description",
11
- "suggestion": "How to fix"
12
- }
13
- ],
14
- "positive_feedback": ["What was done well"],
15
- "documentation_updates": ["Required doc changes"]
16
- }
Binary file
@@ -1,32 +0,0 @@
1
- # MCP GitHub Integration Example
2
- # This workflow demonstrates using the GitHub MCP server to interact with repositories
3
-
4
- name: GitHub Issue Analyzer
5
- model: gpt-4o-mini
6
-
7
- tools:
8
- # Traditional Roast tool for writing output
9
- - Roast::Tools::WriteFile
10
-
11
- # GitHub MCP tool - using npx to run the server
12
- - GitHub:
13
- command: npx
14
- args:
15
- - "-y"
16
- - "@modelcontextprotocol/server-github"
17
- env:
18
- GITHUB_PERSONAL_ACCESS_TOKEN: "{{ENV['GITHUB_TOKEN']}}"
19
- only:
20
- - search_repositories
21
- - get_repository
22
- - get_issue
23
- - list_issues
24
- - create_issue
25
- - create_pull_request
26
- - search_code
27
-
28
- steps:
29
- - search_issues
30
- - analyze_issues
31
- - generate_report
32
- - save_report
Binary file
@@ -1,58 +0,0 @@
1
- # Multi-MCP Integration Example
2
- # This workflow combines multiple MCP tools with traditional Roast tools
3
-
4
- name: Code Review Assistant
5
- model: gpt-4o-mini
6
- target: "README.md" # Use a static file for testing
7
-
8
- tools:
9
- # Traditional Roast tools
10
- - Roast::Tools::ReadFile
11
- - Roast::Tools::Grep
12
- - Roast::Tools::WriteFile
13
-
14
- # Multiple MCP tools
15
- # - GitDocs:
16
- # url: https://gitmcp.io/{{ENV['REPO_OWNER']}}/{{ENV['REPO_NAME']}}/docs
17
- # env:
18
- # Accept: application/json
19
-
20
- # GitHub MCP (requires GITHUB_TOKEN environment variable)
21
- # Uncomment to use:
22
- # - GitHub:
23
- # command: npx
24
- # args: ["-y", "@modelcontextprotocol/server-github"]
25
- # env:
26
- # GITHUB_PERSONAL_ACCESS_TOKEN: "{{ENV['GITHUB_TOKEN']}}"
27
- # only:
28
- # - get_pull_request
29
- # - create_pull_request_comment
30
- # - get_file_content
31
-
32
- # Filesystem MCP (no auth required)
33
- - FileSystem:
34
- command: npx
35
- args: ["-y", "@modelcontextprotocol/server-filesystem", "."]
36
- only:
37
- - read_file
38
- - list_directory
39
-
40
- # - Linter:
41
- # command: ./custom-linter-mcp
42
- # env:
43
- # CONFIG_PATH: "{{ENV['LINTER_CONFIG']}}"
44
- # only:
45
- # - analyze_code
46
- # - suggest_fixes
47
-
48
- steps:
49
- - test_read
50
- - test_filesystem
51
-
52
- test_read:
53
- prompt: Use the ReadFile tool to read the README.md file
54
-
55
- test_filesystem:
56
- prompt: |
57
- Use the FileSystem MCP tool's list_directory function to list the current directory.
58
- Then pick an interesting file and read it with the read_file function.
@@ -1,3 +0,0 @@
1
- Using the GitHub tool, post the code review as a comment on PR #<%= ENV['PR_NUMBER'] %>.
2
- Format the review in a friendly, constructive manner.
3
- Include specific line-by-line suggestions where appropriate.
@@ -1,6 +0,0 @@
1
- Using the write_file tool, save the bug analysis report to a file named "bug_analysis_report.md".
2
-
3
- The report content should be:
4
- <%= output.generate_report %>
5
-
6
- Save this to the file and confirm when complete.
@@ -1,2 +0,0 @@
1
- Using the GitHub tool, search for open issues with the "bug" label in the Shopify/roast repository.
2
- List the issue titles, numbers, and created dates.
@@ -1 +0,0 @@
1
- Generate a brief summary, with one code example, in Markdown format.
@@ -1,6 +0,0 @@
1
- Use the FileSystem MCP tool to explore the current directory:
2
-
3
- 1. First, use the list_directory function with path "." to see what files are here
4
- 2. Then pick one interesting file (like a .yml or .md file) and read it using the read_file function
5
-
6
- This demonstrates using MCP tools for filesystem access.
@@ -1,8 +0,0 @@
1
- Use the GitHub MCP tool's get_file_content function to fetch the README.md from the Shopify/roast repository.
2
-
3
- The function should be called with these parameters:
4
- - owner: "Shopify"
5
- - repo: "roast"
6
- - path: "README.md"
7
-
8
- Then summarize what the README contains.
@@ -1 +0,0 @@
1
- Use the read_file function to read the README.md file in the current directory and summarize what it contains.
Binary file
@@ -1,35 +0,0 @@
1
- # usage: roast execute examples/mcp/workflow.yml -o output.md
2
-
3
- name: MCP Tools Example
4
- model: gpt-4o-mini
5
- tools:
6
- # SSE MCP:
7
- - Roast Docs:
8
- url: https://gitmcp.io/Shopify/roast/docs
9
- # Can pass headers for authentication
10
- # env:
11
- # - "Authorization: Bearer {{resource.api_token}}"
12
- # stdio MCPs are also supported
13
- # - GitHub:
14
- # command: "docker",
15
- # args:
16
- # - "run"
17
- # - "-i"
18
- # - "--rm"
19
- # - "-e"
20
- # - "GITHUB_PERSONAL_ACCESS_TOKEN"
21
- # - "ghcr.io/github/github-mcp-server"
22
- # env:
23
- # GITHUB_PERSONAL_ACCESS_TOKEN: "<YOUR_TOKEN>"
24
- # only:
25
- # - get_issue
26
- # - get_issue_comments
27
- # except:
28
- # - create_issue
29
-
30
- steps:
31
- - get_doc: Read the Roast docs, and tell me how to use MCP tools.
32
- - summarize
33
-
34
- summarize:
35
- print_response: true
@@ -1,17 +0,0 @@
1
- # No Model Fallback Example
2
-
3
- This example demonstrates the issue where workflows without explicit model specification do not properly fall back to a default model.
4
-
5
- ## Purpose
6
-
7
- This workflow is based on the interpolation example but intentionally omits the `model` field to test the fallback behavior.
8
-
9
- ## Expected Behavior
10
-
11
- The workflow should fall back to a default model when no model is specified at the workflow level.
12
-
13
- ## Usage
14
-
15
- ```bash
16
- bin/roast examples/no_model_fallback/workflow.yml --file examples/no_model_fallback/sample.rb
17
- ```
@@ -1 +0,0 @@
1
- Analyze the file at: <%= workflow.file %>
@@ -1,27 +0,0 @@
1
- Extract some patterns about this file and return in json format like this:
2
-
3
- <json>
4
- {
5
- "code_patterns": {
6
- "class_structure": {
7
- "name": "Calculator",
8
- "instance_variables": ["@memory"],
9
- "method_count": 7,
10
- "method_types": {
11
- "constructor": ["initialize"],
12
- "operations": ["add", "subtract", "multiply", "divide"],
13
- "accessors": ["memory"],
14
- "utility": ["clear"]
15
- }
16
- },
17
- "error_handling": {
18
- "techniques": ["conditional raise", "zero check"],
19
- "examples": ["raise \"Division by zero!\" if number.zero?"]
20
- },
21
- "design_patterns": {
22
- "state": "Uses instance variable to maintain calculator state",
23
- "command": "Each operation method modifies the internal state"
24
- }
25
- }
26
- }
27
- </json>
@@ -1,10 +0,0 @@
1
- Generate a comprehensive report for the markdown file.
2
-
3
- File content: {{steps.analyze_file}}
4
-
5
- Patterns found: {{steps.analyze_patterns}}
6
-
7
- Please create a detailed report that includes:
8
- 1. Summary of the file content
9
- 2. Key patterns identified
10
- 3. Any recommendations or observations
@@ -1,3 +0,0 @@
1
- Generate a nicely formatted report based on the following metadata:
2
-
3
- <%= workflow.output[:analyze_patterns] %>
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Sample Ruby file for testing interpolation in workflows
4
-
5
- class Calculator
6
- def initialize
7
- @memory = 0
8
- end
9
-
10
- def add(number)
11
- @memory += number
12
- end
13
-
14
- def subtract(number)
15
- @memory -= number
16
- end
17
-
18
- def multiply(number)
19
- @memory *= number
20
- end
21
-
22
- def divide(number)
23
- raise "Division by zero!" if number.zero?
24
-
25
- @memory /= number
26
- end
27
-
28
- attr_reader :memory
29
-
30
- def clear
31
- @memory = 0
32
- end
33
- end
34
-
35
- # Example usage
36
- if __FILE__ == $PROGRAM_NAME
37
- calc = Calculator.new
38
- calc.add(10)
39
- calc.multiply(2)
40
- calc.subtract(5)
41
- puts "Result: #{calc.memory}"
42
- end
@@ -1,19 +0,0 @@
1
- name: no_model_fallback_example
2
-
3
- tools:
4
- - Roast::Tools::ReadFile
5
-
6
- steps:
7
- - analyze_file
8
- - analyze_patterns
9
- - generate_report_for_{{File.extname(workflow.file).sub('.', '')}}
10
- - '$(echo "Processing completed for file: {{File.basename(workflow.file)}}")'
11
-
12
- analyze_patterns:
13
- json: true
14
-
15
- generate_report_for_rb:
16
- print_response: true
17
-
18
- generate_report_for_md:
19
- print_response: true
@@ -1,48 +0,0 @@
1
- # OpenRouter Example
2
-
3
- This example demonstrates how to use OpenRouter with Roast to access models from different providers through a single API.
4
-
5
- ## Setup
6
-
7
- 1. Sign up for an account at [OpenRouter](https://openrouter.ai/)
8
- 2. Get your API key from the OpenRouter dashboard
9
- 3. Set the API key as an environment variable:
10
- ```bash
11
- export OPENROUTER_API_KEY=your_api_key_here
12
- ```
13
-
14
- ## Running the Example
15
-
16
- ```bash
17
- # Run without a specific target (general analysis)
18
- roast execute workflow.yml
19
-
20
- # Run with a specific file to analyze
21
- roast execute workflow.yml path/to/your/file.txt
22
- ```
23
-
24
- ## How it Works
25
-
26
- This example configures Roast to use OpenRouter as the API provider:
27
-
28
- ```yaml
29
- api_provider: openrouter
30
- api_token: $(echo $OPENROUTER_API_KEY)
31
- model: anthropic/claude-3-haiku-20240307
32
- ```
33
-
34
- The workflow consists of two steps:
35
- 1. `analyze_input`: Analyzes the provided content (or generates general insights if no target is provided)
36
- 2. `generate_response`: Creates a structured response based on the analysis
37
-
38
- ## Available Models
39
-
40
- When using OpenRouter, you can access models from multiple providers by specifying the fully qualified model name, including the provider prefix. Some examples:
41
-
42
- - `anthropic/claude-3-opus-20240229`
43
- - `anthropic/claude-3-sonnet-20240229`
44
- - `meta/llama-3-70b-instruct`
45
- - `google/gemini-1.5-pro-latest`
46
- - `mistral/mistral-large-latest`
47
-
48
- Check the [OpenRouter documentation](https://openrouter.ai/docs) for the complete list of supported models.
@@ -1,16 +0,0 @@
1
- I'd like you to analyze the following input and provide your insights.
2
-
3
- <% if workflow.file && workflow.resource.content %>
4
- Here is the content to analyze:
5
-
6
- ```
7
- <%= workflow.resource.content %>
8
- ```
9
- <% else %>
10
- The workflow is running without a specific file target. Please provide general insights based on the context.
11
- <% end %>
12
-
13
- Please provide:
14
- 1. A summary of the key points
15
- 2. Any notable patterns or issues
16
- 3. Recommendations based on your analysis
@@ -1,9 +0,0 @@
1
- Based on the analysis from the previous step, please generate a response that addresses the findings.
2
-
3
- Your response should be well-structured and include:
4
- 1. An introduction summarizing the analysis
5
- 2. Detailed discussion of key points
6
- 3. Clear recommendations for improvements
7
- 4. A conclusion
8
-
9
- Format the response in markdown for better readability.
@@ -1,12 +0,0 @@
1
- name: OpenRouter Example
2
- api_provider: openrouter
3
- api_token: $(echo $OPENROUTER_API_KEY)
4
- model: google/gemini-2.0-flash-001
5
-
6
- tools:
7
- - Roast::Tools::ReadFile
8
- - Roast::Tools::WriteFile
9
-
10
- steps:
11
- - analyze_input
12
- - generate_response