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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +20 -0
- data/CLAUDE.md +52 -1
- data/Gemfile +3 -1
- data/Gemfile.lock +63 -16
- data/README.md +90 -5
- data/bin/roast +1 -1
- data/claude-swarm.yml +210 -0
- data/docs/AGENT_STEPS.md +264 -0
- data/examples/agent_workflow/README.md +75 -0
- data/examples/agent_workflow/apply_refactorings/prompt.md +22 -0
- data/examples/agent_workflow/identify_code_smells/prompt.md +15 -0
- data/examples/agent_workflow/summarize_improvements/prompt.md +18 -0
- data/examples/agent_workflow/workflow.yml +16 -0
- data/examples/available_tools_demo/README.md +42 -0
- data/examples/available_tools_demo/analyze_files/prompt.md +6 -0
- data/examples/available_tools_demo/explore_directory/prompt.md +6 -0
- data/examples/available_tools_demo/workflow.yml +32 -0
- data/examples/available_tools_demo/write_summary/prompt.md +6 -0
- data/examples/case_when/detect_language/prompt.md +2 -2
- data/examples/grading/run_coverage.rb +0 -2
- data/examples/iteration/analyze_complexity/prompt.md +2 -2
- data/examples/iteration/generate_recommendations/prompt.md +2 -2
- data/examples/iteration/implement_fix/prompt.md +2 -2
- data/examples/iteration/prioritize_issues/prompt.md +1 -1
- data/examples/iteration/prompts/analyze_file.md +2 -2
- data/examples/iteration/prompts/generate_summary.md +1 -1
- data/examples/iteration/prompts/update_report.md +3 -3
- data/examples/iteration/prompts/write_report.md +3 -3
- data/examples/iteration/read_file/prompt.md +2 -2
- data/examples/iteration/select_next_issue/prompt.md +2 -2
- data/examples/iteration/update_fix_count/prompt.md +4 -4
- data/examples/iteration/verify_fix/prompt.md +3 -3
- data/examples/mcp/README.md +3 -3
- data/examples/mcp/analyze_changes/prompt.md +1 -1
- data/examples/mcp/database_workflow.yml +1 -1
- data/examples/mcp/fetch_pr_context/prompt.md +1 -1
- data/examples/mcp/github_workflow.yml +1 -1
- data/examples/mcp/post_review/prompt.md +1 -1
- data/examples/pre_post_processing/analyze_test_file/prompt.md +1 -1
- data/examples/pre_post_processing/improve_test_coverage/prompt.md +1 -1
- data/examples/pre_post_processing/optimize_test_performance/prompt.md +1 -1
- data/examples/pre_post_processing/post_processing/aggregate_metrics/prompt.md +2 -2
- data/examples/pre_post_processing/post_processing/generate_summary_report/prompt.md +1 -1
- data/examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md +1 -1
- data/examples/pre_post_processing/validate_changes/prompt.md +2 -2
- data/examples/user_input/README.md +90 -0
- data/examples/user_input/funny_name/create_backstory/prompt.md +10 -0
- data/examples/user_input/funny_name/workflow.yml +26 -0
- data/examples/user_input/generate_summary/prompt.md +11 -0
- data/examples/user_input/simple_input_demo/workflow.yml +35 -0
- data/examples/user_input/survey_workflow.yml +71 -0
- data/examples/user_input/welcome_message/prompt.md +3 -0
- data/examples/user_input/workflow.yml +73 -0
- data/examples/workflow_generator/create_workflow_files/prompt.md +1 -1
- data/lib/roast/errors.rb +6 -4
- data/lib/roast/helpers/function_caching_interceptor.rb +0 -2
- data/lib/roast/helpers/logger.rb +12 -35
- data/lib/roast/helpers/minitest_coverage_runner.rb +0 -1
- data/lib/roast/helpers/prompt_loader.rb +0 -2
- data/lib/roast/resources/api_resource.rb +0 -4
- data/lib/roast/resources/url_resource.rb +0 -3
- data/lib/roast/resources.rb +0 -8
- data/lib/roast/tools/ask_user.rb +0 -2
- data/lib/roast/tools/bash.rb +0 -3
- data/lib/roast/tools/cmd.rb +0 -3
- data/lib/roast/tools/coding_agent.rb +1 -8
- data/lib/roast/tools/grep.rb +0 -3
- data/lib/roast/tools/helpers/coding_agent_message_formatter.rb +1 -4
- data/lib/roast/tools/read_file.rb +0 -2
- data/lib/roast/tools/search_file.rb +0 -2
- data/lib/roast/tools/update_files.rb +0 -4
- data/lib/roast/tools/write_file.rb +0 -3
- data/lib/roast/tools.rb +0 -13
- data/lib/roast/value_objects/step_name.rb +14 -3
- data/lib/roast/value_objects/workflow_path.rb +0 -2
- data/lib/roast/value_objects.rb +4 -4
- data/lib/roast/version.rb +1 -1
- data/lib/roast/workflow/agent_step.rb +26 -0
- data/lib/roast/workflow/api_configuration.rb +0 -4
- data/lib/roast/workflow/base_iteration_step.rb +0 -4
- data/lib/roast/workflow/base_step.rb +54 -28
- data/lib/roast/workflow/base_workflow.rb +2 -21
- data/lib/roast/workflow/case_executor.rb +0 -1
- data/lib/roast/workflow/case_step.rb +0 -4
- data/lib/roast/workflow/command_executor.rb +0 -2
- data/lib/roast/workflow/conditional_executor.rb +0 -1
- data/lib/roast/workflow/conditional_step.rb +0 -4
- data/lib/roast/workflow/configuration.rb +3 -66
- data/lib/roast/workflow/configuration_loader.rb +0 -2
- data/lib/roast/workflow/configuration_parser.rb +1 -7
- data/lib/roast/workflow/dot_access_hash.rb +16 -1
- data/lib/roast/workflow/error_handler.rb +0 -3
- data/lib/roast/workflow/expression_evaluator.rb +0 -3
- data/lib/roast/workflow/file_state_repository.rb +0 -5
- data/lib/roast/workflow/input_executor.rb +41 -0
- data/lib/roast/workflow/input_step.rb +163 -0
- data/lib/roast/workflow/iteration_executor.rb +0 -2
- data/lib/roast/workflow/output_handler.rb +0 -2
- data/lib/roast/workflow/output_manager.rb +0 -2
- data/lib/roast/workflow/replay_handler.rb +0 -3
- data/lib/roast/workflow/resource_resolver.rb +0 -3
- data/lib/roast/workflow/session_manager.rb +0 -3
- data/lib/roast/workflow/state_manager.rb +0 -2
- data/lib/roast/workflow/step_executor_coordinator.rb +34 -11
- data/lib/roast/workflow/step_executor_factory.rb +0 -5
- data/lib/roast/workflow/step_executor_registry.rb +1 -4
- data/lib/roast/workflow/step_executors/hash_step_executor.rb +0 -3
- data/lib/roast/workflow/step_executors/parallel_step_executor.rb +0 -3
- data/lib/roast/workflow/step_executors/string_step_executor.rb +0 -2
- data/lib/roast/workflow/step_factory.rb +56 -0
- data/lib/roast/workflow/step_loader.rb +30 -16
- data/lib/roast/workflow/step_orchestrator.rb +3 -2
- data/lib/roast/workflow/step_type_resolver.rb +28 -1
- data/lib/roast/workflow/validator.rb +0 -4
- data/lib/roast/workflow/workflow_executor.rb +0 -16
- data/lib/roast/workflow/workflow_initializer.rb +1 -8
- data/lib/roast/workflow/workflow_runner.rb +0 -7
- data/lib/roast/workflow.rb +0 -15
- data/lib/roast.rb +55 -10
- data/roast.gemspec +2 -1
- data/schema/workflow.json +46 -0
- metadata +43 -6
- 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
|
-
|
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,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
|
data/lib/roast/workflow.rb
CHANGED
@@ -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 "
|
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
|
-
|
16
|
-
|
17
|
-
require "
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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.
|
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:
|
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:
|
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
|