roast-ai 0.3.1 → 0.4.0

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 (125) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +20 -0
  4. data/CLAUDE.md +52 -1
  5. data/Gemfile +3 -1
  6. data/Gemfile.lock +63 -16
  7. data/README.md +90 -5
  8. data/bin/roast +1 -1
  9. data/claude-swarm.yml +210 -0
  10. data/docs/AGENT_STEPS.md +264 -0
  11. data/examples/agent_workflow/README.md +75 -0
  12. data/examples/agent_workflow/apply_refactorings/prompt.md +22 -0
  13. data/examples/agent_workflow/identify_code_smells/prompt.md +15 -0
  14. data/examples/agent_workflow/summarize_improvements/prompt.md +18 -0
  15. data/examples/agent_workflow/workflow.yml +16 -0
  16. data/examples/available_tools_demo/README.md +42 -0
  17. data/examples/available_tools_demo/analyze_files/prompt.md +6 -0
  18. data/examples/available_tools_demo/explore_directory/prompt.md +6 -0
  19. data/examples/available_tools_demo/workflow.yml +32 -0
  20. data/examples/available_tools_demo/write_summary/prompt.md +6 -0
  21. data/examples/case_when/detect_language/prompt.md +2 -2
  22. data/examples/grading/run_coverage.rb +0 -2
  23. data/examples/iteration/analyze_complexity/prompt.md +2 -2
  24. data/examples/iteration/generate_recommendations/prompt.md +2 -2
  25. data/examples/iteration/implement_fix/prompt.md +2 -2
  26. data/examples/iteration/prioritize_issues/prompt.md +1 -1
  27. data/examples/iteration/prompts/analyze_file.md +2 -2
  28. data/examples/iteration/prompts/generate_summary.md +1 -1
  29. data/examples/iteration/prompts/update_report.md +3 -3
  30. data/examples/iteration/prompts/write_report.md +3 -3
  31. data/examples/iteration/read_file/prompt.md +2 -2
  32. data/examples/iteration/select_next_issue/prompt.md +2 -2
  33. data/examples/iteration/update_fix_count/prompt.md +4 -4
  34. data/examples/iteration/verify_fix/prompt.md +3 -3
  35. data/examples/mcp/README.md +3 -3
  36. data/examples/mcp/analyze_changes/prompt.md +1 -1
  37. data/examples/mcp/database_workflow.yml +1 -1
  38. data/examples/mcp/fetch_pr_context/prompt.md +1 -1
  39. data/examples/mcp/github_workflow.yml +1 -1
  40. data/examples/mcp/post_review/prompt.md +1 -1
  41. data/examples/pre_post_processing/analyze_test_file/prompt.md +1 -1
  42. data/examples/pre_post_processing/improve_test_coverage/prompt.md +1 -1
  43. data/examples/pre_post_processing/optimize_test_performance/prompt.md +1 -1
  44. data/examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md +2 -2
  45. data/examples/pre_post_processing/post_processing/generate_summary_report/prompt.md +1 -1
  46. data/examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md +1 -1
  47. data/examples/pre_post_processing/validate_changes/prompt.md +2 -2
  48. data/examples/user_input/README.md +90 -0
  49. data/examples/user_input/funny_name/create_backstory/prompt.md +10 -0
  50. data/examples/user_input/funny_name/workflow.yml +26 -0
  51. data/examples/user_input/generate_summary/prompt.md +11 -0
  52. data/examples/user_input/simple_input_demo/workflow.yml +35 -0
  53. data/examples/user_input/survey_workflow.yml +71 -0
  54. data/examples/user_input/welcome_message/prompt.md +3 -0
  55. data/examples/user_input/workflow.yml +73 -0
  56. data/examples/workflow_generator/create_workflow_files/prompt.md +1 -1
  57. data/lib/roast/errors.rb +6 -4
  58. data/lib/roast/helpers/function_caching_interceptor.rb +0 -2
  59. data/lib/roast/helpers/logger.rb +12 -35
  60. data/lib/roast/helpers/minitest_coverage_runner.rb +0 -1
  61. data/lib/roast/helpers/prompt_loader.rb +0 -2
  62. data/lib/roast/resources/api_resource.rb +0 -4
  63. data/lib/roast/resources/url_resource.rb +0 -3
  64. data/lib/roast/resources.rb +0 -8
  65. data/lib/roast/tools/ask_user.rb +0 -2
  66. data/lib/roast/tools/bash.rb +0 -3
  67. data/lib/roast/tools/cmd.rb +0 -3
  68. data/lib/roast/tools/coding_agent.rb +1 -8
  69. data/lib/roast/tools/grep.rb +0 -3
  70. data/lib/roast/tools/helpers/coding_agent_message_formatter.rb +1 -4
  71. data/lib/roast/tools/read_file.rb +0 -2
  72. data/lib/roast/tools/search_file.rb +0 -2
  73. data/lib/roast/tools/update_files.rb +0 -4
  74. data/lib/roast/tools/write_file.rb +0 -3
  75. data/lib/roast/tools.rb +0 -13
  76. data/lib/roast/value_objects/step_name.rb +14 -3
  77. data/lib/roast/value_objects/workflow_path.rb +0 -2
  78. data/lib/roast/value_objects.rb +4 -4
  79. data/lib/roast/version.rb +1 -1
  80. data/lib/roast/workflow/agent_step.rb +26 -0
  81. data/lib/roast/workflow/api_configuration.rb +0 -4
  82. data/lib/roast/workflow/base_iteration_step.rb +0 -4
  83. data/lib/roast/workflow/base_step.rb +54 -28
  84. data/lib/roast/workflow/base_workflow.rb +2 -21
  85. data/lib/roast/workflow/case_executor.rb +0 -1
  86. data/lib/roast/workflow/case_step.rb +0 -4
  87. data/lib/roast/workflow/command_executor.rb +0 -2
  88. data/lib/roast/workflow/conditional_executor.rb +0 -1
  89. data/lib/roast/workflow/conditional_step.rb +0 -4
  90. data/lib/roast/workflow/configuration.rb +3 -66
  91. data/lib/roast/workflow/configuration_loader.rb +0 -2
  92. data/lib/roast/workflow/configuration_parser.rb +1 -7
  93. data/lib/roast/workflow/dot_access_hash.rb +16 -1
  94. data/lib/roast/workflow/error_handler.rb +0 -3
  95. data/lib/roast/workflow/expression_evaluator.rb +0 -3
  96. data/lib/roast/workflow/file_state_repository.rb +0 -5
  97. data/lib/roast/workflow/input_executor.rb +41 -0
  98. data/lib/roast/workflow/input_step.rb +163 -0
  99. data/lib/roast/workflow/iteration_executor.rb +0 -2
  100. data/lib/roast/workflow/output_handler.rb +0 -2
  101. data/lib/roast/workflow/output_manager.rb +0 -2
  102. data/lib/roast/workflow/replay_handler.rb +0 -3
  103. data/lib/roast/workflow/resource_resolver.rb +0 -3
  104. data/lib/roast/workflow/session_manager.rb +0 -3
  105. data/lib/roast/workflow/state_manager.rb +0 -2
  106. data/lib/roast/workflow/step_executor_coordinator.rb +34 -11
  107. data/lib/roast/workflow/step_executor_factory.rb +0 -5
  108. data/lib/roast/workflow/step_executor_registry.rb +1 -4
  109. data/lib/roast/workflow/step_executors/hash_step_executor.rb +0 -3
  110. data/lib/roast/workflow/step_executors/parallel_step_executor.rb +0 -3
  111. data/lib/roast/workflow/step_executors/string_step_executor.rb +0 -2
  112. data/lib/roast/workflow/step_factory.rb +56 -0
  113. data/lib/roast/workflow/step_loader.rb +30 -16
  114. data/lib/roast/workflow/step_orchestrator.rb +3 -2
  115. data/lib/roast/workflow/step_type_resolver.rb +28 -1
  116. data/lib/roast/workflow/validator.rb +0 -4
  117. data/lib/roast/workflow/workflow_executor.rb +0 -16
  118. data/lib/roast/workflow/workflow_initializer.rb +1 -8
  119. data/lib/roast/workflow/workflow_runner.rb +0 -7
  120. data/lib/roast/workflow.rb +0 -15
  121. data/lib/roast.rb +55 -10
  122. data/roast.gemspec +2 -1
  123. data/schema/workflow.json +46 -0
  124. metadata +43 -6
  125. data/lib/roast/helpers.rb +0 -12
@@ -10,10 +10,12 @@ module Roast
10
10
  ITERATION_STEP = :iteration
11
11
  CONDITIONAL_STEP = :conditional
12
12
  CASE_STEP = :case
13
+ INPUT_STEP = :input
13
14
  HASH_STEP = :hash
14
15
  PARALLEL_STEP = :parallel
15
16
  STRING_STEP = :string
16
17
  STANDARD_STEP = :standard
18
+ AGENT_STEP = :agent
17
19
 
18
20
  # Special step names for iterations
19
21
  ITERATION_STEPS = ["repeat", "each"].freeze
@@ -24,6 +26,9 @@ module Roast
24
26
  # Special step name for case statements
25
27
  CASE_STEPS = ["case"].freeze
26
28
 
29
+ # Special step name for input steps
30
+ INPUT_STEPS = ["input"].freeze
31
+
27
32
  class << self
28
33
  # Resolve the type of a step
29
34
  # @param step [String, Hash, Array] The step to analyze
@@ -49,6 +54,13 @@ module Roast
49
54
  step.is_a?(String) && step.start_with?("$(")
50
55
  end
51
56
 
57
+ # Check if a step is an agent step
58
+ # @param step [String] The step to check
59
+ # @return [Boolean] true if it's an agent step
60
+ def agent_step?(step)
61
+ step.is_a?(String) && step.start_with?("^")
62
+ end
63
+
52
64
  # Check if a step is a glob pattern
53
65
  # @param step [String] The step to check
54
66
  # @param context [WorkflowContext, nil] The workflow context
@@ -90,13 +102,24 @@ module Roast
90
102
  CASE_STEPS.include?(step_name)
91
103
  end
92
104
 
105
+ # Check if a step is an input step
106
+ # @param step [Hash] The step to check
107
+ # @return [Boolean] true if it's an input step
108
+ def input_step?(step)
109
+ return false unless step.is_a?(Hash)
110
+
111
+ step_name = step.keys.first
112
+ INPUT_STEPS.include?(step_name)
113
+ end
114
+
93
115
  # Extract the step name from various step formats
94
116
  # @param step [String, Hash, Array] The step
95
117
  # @return [String, nil] The step name or nil
96
118
  def extract_name(step)
97
119
  case step
98
120
  when String
99
- step
121
+ # Strip ^ prefix for agent steps
122
+ agent_step?(step) ? step[1..] : step
100
123
  when Hash
101
124
  step.keys.first
102
125
  when Array
@@ -109,6 +132,8 @@ module Roast
109
132
  def resolve_string_step(step, context)
110
133
  if command_step?(step)
111
134
  COMMAND_STEP
135
+ elsif agent_step?(step)
136
+ AGENT_STEP
112
137
  elsif glob_step?(step, context)
113
138
  GLOB_STEP
114
139
  else
@@ -123,6 +148,8 @@ module Roast
123
148
  CONDITIONAL_STEP
124
149
  elsif case_step?(step)
125
150
  CASE_STEP
151
+ elsif input_step?(step)
152
+ INPUT_STEP
126
153
  else
127
154
  HASH_STEP
128
155
  end
@@ -1,9 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "json-schema"
4
- require "json"
5
- require "yaml"
6
-
7
3
  module Roast
8
4
  module Workflow
9
5
  class Validator
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "English"
4
-
5
- require "roast/workflow/command_executor"
6
- require "roast/workflow/conditional_executor"
7
- require "roast/workflow/error_handler"
8
- require "roast/workflow/interpolator"
9
- require "roast/workflow/iteration_executor"
10
- require "roast/workflow/parallel_executor"
11
- require "roast/workflow/state_manager"
12
- require "roast/workflow/step_executor_factory"
13
- require "roast/workflow/step_executor_coordinator"
14
- require "roast/workflow/step_loader"
15
- require "roast/workflow/step_orchestrator"
16
- require "roast/workflow/step_type_resolver"
17
- require "roast/workflow/workflow_context"
18
-
19
3
  module Roast
20
4
  module Workflow
21
5
  # Handles the execution of workflow steps, including orchestration and threading
@@ -1,12 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "raix"
4
- require "roast/initializers"
5
- require "roast/helpers/function_caching_interceptor"
6
- require "roast/helpers/logger"
7
- require "roast/workflow/base_workflow"
8
- require "roast/workflow/interpolator"
9
-
10
3
  module Roast
11
4
  module Workflow
12
5
  # Handles initialization of workflow dependencies: initializers, tools, and API clients
@@ -103,7 +96,7 @@ module Roast
103
96
  # Validate the client configuration by making a test API call
104
97
  validate_api_client(client) if client
105
98
  rescue OpenRouter::ConfigurationError, Faraday::UnauthorizedError => e
106
- error = Roast::AuthenticationError.new("API authentication failed: No API token provided or token is invalid")
99
+ error = Roast::Errors::AuthenticationError.new("API authentication failed: No API token provided or token is invalid")
107
100
  error.set_backtrace(e.backtrace)
108
101
 
109
102
  ActiveSupport::Notifications.instrument("roast.workflow.start.error", {
@@ -1,12 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "erb"
4
- require "roast/workflow/replay_handler"
5
- require "roast/workflow/workflow_executor"
6
- require "roast/workflow/output_handler"
7
- require "roast/workflow/base_workflow"
8
- require "roast/workflow/dot_access_hash"
9
-
10
3
  module Roast
11
4
  module Workflow
12
5
  # Handles running workflows for files/targets and orchestrating execution
@@ -1,20 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "roast/workflow/base_step"
4
- require "roast/workflow/prompt_step"
5
- require "roast/workflow/base_iteration_step"
6
- require "roast/workflow/repeat_step"
7
- require "roast/workflow/each_step"
8
- require "roast/workflow/base_workflow"
9
- require "roast/workflow/configuration"
10
- require "roast/workflow/workflow_execution_context"
11
- require "roast/workflow/workflow_executor"
12
- require "roast/workflow/configuration_parser"
13
- require "roast/workflow/validator"
14
- require "roast/workflow/state_repository"
15
- require "roast/workflow/session_manager"
16
- require "roast/workflow/file_state_repository"
17
-
18
3
  module Roast
19
4
  module Workflow
20
5
  end
data/lib/roast.rb CHANGED
@@ -1,24 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Standard library requires
4
+ require "digest"
5
+ require "English"
6
+ require "erb"
7
+ require "fileutils"
8
+ require "json"
9
+ require "logger"
10
+ require "net/http"
11
+ require "open3"
12
+ require "pathname"
13
+ require "securerandom"
14
+ require "tempfile"
15
+ require "uri"
16
+ require "yaml"
17
+
18
+ # Third-party gem requires
3
19
  require "active_support"
4
20
  require "active_support/cache"
5
- require "active_support/notifications"
6
21
  require "active_support/core_ext/hash/indifferent_access"
22
+ require "active_support/core_ext/module/delegation"
7
23
  require "active_support/core_ext/string"
8
24
  require "active_support/core_ext/string/inflections"
9
- require "active_support/core_ext/module/delegation"
10
25
  require "active_support/isolated_execution_state"
11
- require "fileutils"
26
+ require "active_support/notifications"
12
27
  require "cli/ui"
28
+ require "diff/lcs"
29
+ require "json-schema"
13
30
  require "raix"
31
+ require "raix/chat_completion"
32
+ require "raix/function_dispatch"
14
33
  require "thor"
15
- require "roast/errors"
16
- require "roast/helpers"
17
- require "roast/initializers"
18
- require "roast/resources"
19
- require "roast/tools"
20
- require "roast/version"
21
- require "roast/workflow"
34
+
35
+ # Autoloading setup
36
+ require "zeitwerk"
37
+
38
+ # Set up Zeitwerk autoloader
39
+ loader = Zeitwerk::Loader.for_gem
40
+ loader.setup
22
41
 
23
42
  module Roast
24
43
  ROOT = File.expand_path("../..", __FILE__)
@@ -63,6 +82,32 @@ module Roast
63
82
  end
64
83
  end
65
84
 
85
+ desc "list", "List workflows visible to Roast and their source"
86
+ def list
87
+ roast_dir = File.join(Dir.pwd, "roast")
88
+
89
+ unless File.directory?(roast_dir)
90
+ raise Thor::Error, "No roast/ directory found in current path"
91
+ end
92
+
93
+ workflow_files = Dir.glob(File.join(roast_dir, "**/workflow.yml")).sort
94
+
95
+ if workflow_files.empty?
96
+ raise Thor::Error, "No workflow.yml files found in roast/ directory"
97
+ end
98
+
99
+ puts "Available workflows:"
100
+ puts
101
+
102
+ workflow_files.each do |file|
103
+ workflow_name = File.dirname(file.sub("#{roast_dir}/", ""))
104
+ puts " #{workflow_name} (from project)"
105
+ end
106
+
107
+ puts
108
+ puts "Run a workflow with: roast execute <workflow_name>"
109
+ end
110
+
66
111
  private
67
112
 
68
113
  def show_example_picker
data/roast.gemspec CHANGED
@@ -37,11 +37,12 @@ Gem::Specification.new do |spec|
37
37
  spec.require_paths = ["lib"]
38
38
 
39
39
  spec.add_dependency("activesupport", ">= 7.0")
40
- spec.add_dependency("cli-ui")
40
+ spec.add_dependency("cli-ui", "2.3.0")
41
41
  spec.add_dependency("diff-lcs", "~> 1.5")
42
42
  spec.add_dependency("faraday-retry")
43
43
  spec.add_dependency("json-schema")
44
44
  spec.add_dependency("open_router", "~> 0.3")
45
45
  spec.add_dependency("raix", "~> 1.0")
46
46
  spec.add_dependency("thor", "~> 1.3")
47
+ spec.add_dependency("zeitwerk", "~> 2.6")
47
48
  end
data/schema/workflow.json CHANGED
@@ -206,6 +206,52 @@
206
206
  }
207
207
  },
208
208
  "required": ["case", "when"]
209
+ },
210
+ {
211
+ "type": "object",
212
+ "properties": {
213
+ "input": {
214
+ "type": "object",
215
+ "properties": {
216
+ "prompt": {
217
+ "type": "string",
218
+ "description": "The prompt text to display to the user"
219
+ },
220
+ "name": {
221
+ "type": "string",
222
+ "description": "Optional name to store the input value in workflow state"
223
+ },
224
+ "type": {
225
+ "type": "string",
226
+ "enum": ["text", "boolean", "choice", "password"],
227
+ "default": "text",
228
+ "description": "The type of input to collect"
229
+ },
230
+ "required": {
231
+ "type": "boolean",
232
+ "default": false,
233
+ "description": "Whether the input is required"
234
+ },
235
+ "default": {
236
+ "description": "Default value for the input"
237
+ },
238
+ "timeout": {
239
+ "type": "number",
240
+ "description": "Optional timeout in seconds"
241
+ },
242
+ "options": {
243
+ "type": "array",
244
+ "items": {
245
+ "type": "string"
246
+ },
247
+ "description": "Options for choice type inputs"
248
+ }
249
+ },
250
+ "required": ["prompt"],
251
+ "additionalProperties": false
252
+ }
253
+ },
254
+ "required": ["input"]
209
255
  }
210
256
  ]
211
257
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roast-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
@@ -27,16 +27,16 @@ dependencies:
27
27
  name: cli-ui
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - ">="
30
+ - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: 2.3.0
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
39
+ version: 2.3.0
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: diff-lcs
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -121,6 +121,20 @@ dependencies:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
123
  version: '1.3'
124
+ - !ruby/object:Gem::Dependency
125
+ name: zeitwerk
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '2.6'
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '2.6'
124
138
  description: Roast is a Ruby library for running structured AI workflows along with
125
139
  many building blocks for creating and executing them
126
140
  email:
@@ -148,14 +162,26 @@ files:
148
162
  - Rakefile
149
163
  - bin/console
150
164
  - bin/roast
165
+ - claude-swarm.yml
166
+ - docs/AGENT_STEPS.md
151
167
  - docs/INSTRUMENTATION.md
152
168
  - docs/ITERATION_SYNTAX.md
169
+ - examples/agent_workflow/README.md
170
+ - examples/agent_workflow/apply_refactorings/prompt.md
171
+ - examples/agent_workflow/identify_code_smells/prompt.md
172
+ - examples/agent_workflow/summarize_improvements/prompt.md
173
+ - examples/agent_workflow/workflow.yml
153
174
  - examples/api_workflow/README.md
154
175
  - examples/api_workflow/fetch_api_data/prompt.md
155
176
  - examples/api_workflow/generate_report/prompt.md
156
177
  - examples/api_workflow/prompt.md
157
178
  - examples/api_workflow/transform_data/prompt.md
158
179
  - examples/api_workflow/workflow.yml
180
+ - examples/available_tools_demo/README.md
181
+ - examples/available_tools_demo/analyze_files/prompt.md
182
+ - examples/available_tools_demo/explore_directory/prompt.md
183
+ - examples/available_tools_demo/workflow.yml
184
+ - examples/available_tools_demo/write_summary/prompt.md
159
185
  - examples/bash_prototyping/README.md
160
186
  - examples/bash_prototyping/analyze_network/prompt.md
161
187
  - examples/bash_prototyping/analyze_system/prompt.md
@@ -300,6 +326,14 @@ files:
300
326
  - examples/tool_config_example/README.md
301
327
  - examples/tool_config_example/example_step/prompt.md
302
328
  - examples/tool_config_example/workflow.yml
329
+ - examples/user_input/README.md
330
+ - examples/user_input/funny_name/create_backstory/prompt.md
331
+ - examples/user_input/funny_name/workflow.yml
332
+ - examples/user_input/generate_summary/prompt.md
333
+ - examples/user_input/simple_input_demo/workflow.yml
334
+ - examples/user_input/survey_workflow.yml
335
+ - examples/user_input/welcome_message/prompt.md
336
+ - examples/user_input/workflow.yml
303
337
  - examples/workflow_generator/README.md
304
338
  - examples/workflow_generator/analyze_user_request/prompt.md
305
339
  - examples/workflow_generator/create_workflow_files/prompt.md
@@ -312,7 +346,6 @@ files:
312
346
  - lib/roast.rb
313
347
  - lib/roast/errors.rb
314
348
  - lib/roast/factories/api_provider_factory.rb
315
- - lib/roast/helpers.rb
316
349
  - lib/roast/helpers/function_caching_interceptor.rb
317
350
  - lib/roast/helpers/logger.rb
318
351
  - lib/roast/helpers/minitest_coverage_runner.rb
@@ -344,6 +377,7 @@ files:
344
377
  - lib/roast/value_objects/workflow_path.rb
345
378
  - lib/roast/version.rb
346
379
  - lib/roast/workflow.rb
380
+ - lib/roast/workflow/agent_step.rb
347
381
  - lib/roast/workflow/api_configuration.rb
348
382
  - lib/roast/workflow/base_iteration_step.rb
349
383
  - lib/roast/workflow/base_step.rb
@@ -363,6 +397,8 @@ files:
363
397
  - lib/roast/workflow/expression_evaluator.rb
364
398
  - lib/roast/workflow/expression_utils.rb
365
399
  - lib/roast/workflow/file_state_repository.rb
400
+ - lib/roast/workflow/input_executor.rb
401
+ - lib/roast/workflow/input_step.rb
366
402
  - lib/roast/workflow/interpolator.rb
367
403
  - lib/roast/workflow/iteration_executor.rb
368
404
  - lib/roast/workflow/llm_boolean_coercer.rb
@@ -383,6 +419,7 @@ files:
383
419
  - lib/roast/workflow/step_executors/hash_step_executor.rb
384
420
  - lib/roast/workflow/step_executors/parallel_step_executor.rb
385
421
  - lib/roast/workflow/step_executors/string_step_executor.rb
422
+ - lib/roast/workflow/step_factory.rb
386
423
  - lib/roast/workflow/step_finder.rb
387
424
  - lib/roast/workflow/step_loader.rb
388
425
  - lib/roast/workflow/step_orchestrator.rb
data/lib/roast/helpers.rb DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "roast/helpers/logger"
4
- require "roast/helpers/path_resolver"
5
- require "roast/helpers/prompt_loader"
6
- require "roast/helpers/minitest_coverage_runner"
7
- require "roast/helpers/function_caching_interceptor"
8
-
9
- module Roast
10
- module Helpers
11
- end
12
- end