roast-ai 0.4.0 → 0.4.1

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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yaml +2 -2
  3. data/CHANGELOG.md +65 -0
  4. data/CLAUDE.md +55 -9
  5. data/Gemfile +1 -0
  6. data/Gemfile.lock +8 -1
  7. data/README.md +69 -3
  8. data/bin/console +1 -0
  9. data/docs/AGENT_STEPS.md +33 -9
  10. data/docs/VALIDATION.md +178 -0
  11. data/examples/agent_continue/add_documentation/prompt.md +5 -0
  12. data/examples/agent_continue/add_error_handling/prompt.md +5 -0
  13. data/examples/agent_continue/analyze_codebase/prompt.md +7 -0
  14. data/examples/agent_continue/combined_workflow.yml +24 -0
  15. data/examples/agent_continue/continue_adding_features/prompt.md +4 -0
  16. data/examples/agent_continue/create_integration_tests/prompt.md +3 -0
  17. data/examples/agent_continue/document_with_context/prompt.md +5 -0
  18. data/examples/agent_continue/explore_api/prompt.md +6 -0
  19. data/examples/agent_continue/implement_client/prompt.md +6 -0
  20. data/examples/agent_continue/inline_workflow.yml +20 -0
  21. data/examples/agent_continue/refactor_code/prompt.md +2 -0
  22. data/examples/agent_continue/verify_changes/prompt.md +6 -0
  23. data/examples/agent_continue/workflow.yml +27 -0
  24. data/examples/agent_workflow/workflow.png +0 -0
  25. data/examples/api_workflow/workflow.png +0 -0
  26. data/examples/apply_diff_demo/README.md +58 -0
  27. data/examples/apply_diff_demo/apply_simple_change/prompt.md +13 -0
  28. data/examples/apply_diff_demo/create_sample_file/prompt.md +11 -0
  29. data/examples/apply_diff_demo/workflow.yml +24 -0
  30. data/examples/available_tools_demo/workflow.png +0 -0
  31. data/examples/bash_prototyping/api_testing.png +0 -0
  32. data/examples/bash_prototyping/system_analysis.png +0 -0
  33. data/examples/case_when/workflow.png +0 -0
  34. data/examples/cmd/basic_workflow.png +0 -0
  35. data/examples/cmd/dev_workflow.png +0 -0
  36. data/examples/cmd/explorer_workflow.png +0 -0
  37. data/examples/conditional/simple_workflow.png +0 -0
  38. data/examples/conditional/workflow.png +0 -0
  39. data/examples/context_management_demo/README.md +43 -0
  40. data/examples/context_management_demo/workflow.yml +42 -0
  41. data/examples/direct_coerce_syntax/workflow.png +0 -0
  42. data/examples/dot_notation/workflow.png +0 -0
  43. data/examples/exit_on_error/workflow.png +0 -0
  44. data/examples/grading/workflow.png +0 -0
  45. data/examples/interpolation/workflow.png +0 -0
  46. data/examples/interpolation/workflow.yml +1 -1
  47. data/examples/iteration/workflow.png +0 -0
  48. data/examples/json_handling/workflow.png +0 -0
  49. data/examples/mcp/database_workflow.png +0 -0
  50. data/examples/mcp/env_demo/workflow.png +0 -0
  51. data/examples/mcp/filesystem_demo/workflow.png +0 -0
  52. data/examples/mcp/github_workflow.png +0 -0
  53. data/examples/mcp/multi_mcp_workflow.png +0 -0
  54. data/examples/mcp/workflow.png +0 -0
  55. data/examples/no_model_fallback/README.md +17 -0
  56. data/examples/no_model_fallback/analyze_file/prompt.md +1 -0
  57. data/examples/no_model_fallback/analyze_patterns/prompt.md +27 -0
  58. data/examples/no_model_fallback/generate_report_for_md/prompt.md +10 -0
  59. data/examples/no_model_fallback/generate_report_for_rb/prompt.md +3 -0
  60. data/examples/no_model_fallback/sample.rb +42 -0
  61. data/examples/no_model_fallback/workflow.yml +19 -0
  62. data/examples/openrouter_example/workflow.png +0 -0
  63. data/examples/pre_post_processing/workflow.png +0 -0
  64. data/examples/rspec_to_minitest/workflow.png +0 -0
  65. data/examples/shared_config/example_with_shared_config/workflow.png +0 -0
  66. data/examples/shared_config/shared.png +0 -0
  67. data/examples/single_target_prepost/workflow.png +0 -0
  68. data/examples/smart_coercion_defaults/workflow.png +0 -0
  69. data/examples/step_configuration/workflow.png +0 -0
  70. data/examples/swarm_example.yml +25 -0
  71. data/examples/tool_config_example/workflow.png +0 -0
  72. data/examples/user_input/funny_name/workflow.png +0 -0
  73. data/examples/user_input/simple_input_demo/workflow.png +0 -0
  74. data/examples/user_input/survey_workflow.png +0 -0
  75. data/examples/user_input/workflow.png +0 -0
  76. data/examples/workflow_generator/workflow.png +0 -0
  77. data/lib/roast/helpers/timeout_handler.rb +91 -0
  78. data/lib/roast/services/context_threshold_checker.rb +42 -0
  79. data/lib/roast/services/token_counting_service.rb +44 -0
  80. data/lib/roast/tools/apply_diff.rb +128 -0
  81. data/lib/roast/tools/bash.rb +15 -9
  82. data/lib/roast/tools/cmd.rb +32 -12
  83. data/lib/roast/tools/coding_agent.rb +64 -9
  84. data/lib/roast/tools/context_summarizer.rb +108 -0
  85. data/lib/roast/tools/swarm.rb +124 -0
  86. data/lib/roast/version.rb +1 -1
  87. data/lib/roast/workflow/agent_step.rb +9 -2
  88. data/lib/roast/workflow/base_iteration_step.rb +3 -2
  89. data/lib/roast/workflow/base_workflow.rb +41 -2
  90. data/lib/roast/workflow/configuration.rb +2 -1
  91. data/lib/roast/workflow/configuration_loader.rb +63 -1
  92. data/lib/roast/workflow/context_manager.rb +89 -0
  93. data/lib/roast/workflow/each_step.rb +1 -1
  94. data/lib/roast/workflow/output_handler.rb +1 -1
  95. data/lib/roast/workflow/repeat_step.rb +1 -1
  96. data/lib/roast/workflow/replay_handler.rb +1 -1
  97. data/lib/roast/workflow/sqlite_state_repository.rb +342 -0
  98. data/lib/roast/workflow/state_manager.rb +2 -2
  99. data/lib/roast/workflow/state_repository_factory.rb +36 -0
  100. data/lib/roast/workflow/step_completion_reporter.rb +27 -0
  101. data/lib/roast/workflow/step_executor_coordinator.rb +19 -18
  102. data/lib/roast/workflow/step_executor_with_reporting.rb +68 -0
  103. data/lib/roast/workflow/step_loader.rb +1 -1
  104. data/lib/roast/workflow/step_name_extractor.rb +84 -0
  105. data/lib/roast/workflow/validation_command.rb +197 -0
  106. data/lib/roast/workflow/validators/base_validator.rb +44 -0
  107. data/lib/roast/workflow/validators/dependency_validator.rb +223 -0
  108. data/lib/roast/workflow/validators/linting_validator.rb +113 -0
  109. data/lib/roast/workflow/validators/schema_validator.rb +90 -0
  110. data/lib/roast/workflow/validators/step_collector.rb +57 -0
  111. data/lib/roast/workflow/validators/validation_orchestrator.rb +52 -0
  112. data/lib/roast/workflow/workflow_executor.rb +11 -4
  113. data/lib/roast/workflow/workflow_runner.rb +6 -0
  114. data/lib/roast/workflow_diagram_generator.rb +298 -0
  115. data/lib/roast.rb +157 -0
  116. data/roast.gemspec +2 -1
  117. data/schema/workflow.json +77 -1
  118. metadata +101 -1
data/schema/workflow.json CHANGED
@@ -8,7 +8,46 @@
8
8
  "tools": {
9
9
  "type": "array",
10
10
  "items": {
11
- "type": "string"
11
+ "oneOf": [
12
+ {
13
+ "type": "string"
14
+ },
15
+ {
16
+ "type": "object",
17
+ "additionalProperties": {
18
+ "type": "object",
19
+ "properties": {
20
+ "url": {
21
+ "type": "string"
22
+ },
23
+ "command": {
24
+ "type": "string"
25
+ },
26
+ "args": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "string"
30
+ }
31
+ },
32
+ "env": {
33
+ "type": "object"
34
+ },
35
+ "only": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "string"
39
+ }
40
+ },
41
+ "except": {
42
+ "type": "array",
43
+ "items": {
44
+ "type": "string"
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ ]
12
51
  }
13
52
  },
14
53
  "target": {
@@ -23,6 +62,43 @@
23
62
  "type": "string",
24
63
  "description": "Default AI model to use for all steps in the workflow"
25
64
  },
65
+ "context_management": {
66
+ "type": "object",
67
+ "description": "Configuration for automatic context management and compaction",
68
+ "properties": {
69
+ "enabled": {
70
+ "type": "boolean",
71
+ "description": "Whether to enable context management",
72
+ "default": true
73
+ },
74
+ "strategy": {
75
+ "type": "string",
76
+ "description": "Compaction strategy to use when threshold is exceeded",
77
+ "enum": ["auto", "summarize", "prune", "none"],
78
+ "default": "auto"
79
+ },
80
+ "threshold": {
81
+ "type": "number",
82
+ "description": "Percentage of context window to trigger compaction (0.0 to 1.0)",
83
+ "minimum": 0.0,
84
+ "maximum": 1.0,
85
+ "default": 0.8
86
+ },
87
+ "max_tokens": {
88
+ "type": "integer",
89
+ "description": "Maximum number of tokens allowed in context (defaults to model's limit)",
90
+ "minimum": 1000
91
+ },
92
+ "retain_steps": {
93
+ "type": "array",
94
+ "description": "Step names to always keep in full when compacting",
95
+ "items": {
96
+ "type": "string"
97
+ }
98
+ }
99
+ },
100
+ "additionalProperties": false
101
+ },
26
102
  "inputs": {
27
103
  "type": "array",
28
104
  "items": {
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.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
@@ -107,6 +107,20 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '1.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: ruby-graphviz
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.2'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.2'
110
124
  - !ruby/object:Gem::Dependency
111
125
  name: thor
112
126
  requirement: !ruby/object:Gem::Requirement
@@ -166,55 +180,89 @@ files:
166
180
  - docs/AGENT_STEPS.md
167
181
  - docs/INSTRUMENTATION.md
168
182
  - docs/ITERATION_SYNTAX.md
183
+ - docs/VALIDATION.md
184
+ - examples/agent_continue/add_documentation/prompt.md
185
+ - examples/agent_continue/add_error_handling/prompt.md
186
+ - examples/agent_continue/analyze_codebase/prompt.md
187
+ - examples/agent_continue/combined_workflow.yml
188
+ - examples/agent_continue/continue_adding_features/prompt.md
189
+ - examples/agent_continue/create_integration_tests/prompt.md
190
+ - examples/agent_continue/document_with_context/prompt.md
191
+ - examples/agent_continue/explore_api/prompt.md
192
+ - examples/agent_continue/implement_client/prompt.md
193
+ - examples/agent_continue/inline_workflow.yml
194
+ - examples/agent_continue/refactor_code/prompt.md
195
+ - examples/agent_continue/verify_changes/prompt.md
196
+ - examples/agent_continue/workflow.yml
169
197
  - examples/agent_workflow/README.md
170
198
  - examples/agent_workflow/apply_refactorings/prompt.md
171
199
  - examples/agent_workflow/identify_code_smells/prompt.md
172
200
  - examples/agent_workflow/summarize_improvements/prompt.md
201
+ - examples/agent_workflow/workflow.png
173
202
  - examples/agent_workflow/workflow.yml
174
203
  - examples/api_workflow/README.md
175
204
  - examples/api_workflow/fetch_api_data/prompt.md
176
205
  - examples/api_workflow/generate_report/prompt.md
177
206
  - examples/api_workflow/prompt.md
178
207
  - examples/api_workflow/transform_data/prompt.md
208
+ - examples/api_workflow/workflow.png
179
209
  - examples/api_workflow/workflow.yml
210
+ - examples/apply_diff_demo/README.md
211
+ - examples/apply_diff_demo/apply_simple_change/prompt.md
212
+ - examples/apply_diff_demo/create_sample_file/prompt.md
213
+ - examples/apply_diff_demo/workflow.yml
180
214
  - examples/available_tools_demo/README.md
181
215
  - examples/available_tools_demo/analyze_files/prompt.md
182
216
  - examples/available_tools_demo/explore_directory/prompt.md
217
+ - examples/available_tools_demo/workflow.png
183
218
  - examples/available_tools_demo/workflow.yml
184
219
  - examples/available_tools_demo/write_summary/prompt.md
185
220
  - examples/bash_prototyping/README.md
186
221
  - examples/bash_prototyping/analyze_network/prompt.md
187
222
  - examples/bash_prototyping/analyze_system/prompt.md
223
+ - examples/bash_prototyping/api_testing.png
188
224
  - examples/bash_prototyping/api_testing.yml
189
225
  - examples/bash_prototyping/check_processes/prompt.md
190
226
  - examples/bash_prototyping/generate_report/prompt.md
191
227
  - examples/bash_prototyping/process_json_response/prompt.md
228
+ - examples/bash_prototyping/system_analysis.png
192
229
  - examples/bash_prototyping/system_analysis.yml
193
230
  - examples/bash_prototyping/test_public_api/prompt.md
194
231
  - examples/case_when/README.md
195
232
  - examples/case_when/detect_language/prompt.md
233
+ - examples/case_when/workflow.png
196
234
  - examples/case_when/workflow.yml
197
235
  - examples/cmd/README.md
198
236
  - examples/cmd/analyze_project/prompt.md
199
237
  - examples/cmd/basic_demo/prompt.md
238
+ - examples/cmd/basic_workflow.png
200
239
  - examples/cmd/basic_workflow.yml
201
240
  - examples/cmd/check_repository/prompt.md
202
241
  - examples/cmd/create_and_verify/prompt.md
242
+ - examples/cmd/dev_workflow.png
203
243
  - examples/cmd/dev_workflow.yml
204
244
  - examples/cmd/explore_project/prompt.md
245
+ - examples/cmd/explorer_workflow.png
205
246
  - examples/cmd/explorer_workflow.yml
206
247
  - examples/cmd/smart_tool_selection/prompt.md
207
248
  - examples/conditional/README.md
208
249
  - examples/conditional/check_condition/prompt.md
250
+ - examples/conditional/simple_workflow.png
209
251
  - examples/conditional/simple_workflow.yml
252
+ - examples/conditional/workflow.png
210
253
  - examples/conditional/workflow.yml
254
+ - examples/context_management_demo/README.md
255
+ - examples/context_management_demo/workflow.yml
211
256
  - examples/direct_coerce_syntax/README.md
257
+ - examples/direct_coerce_syntax/workflow.png
212
258
  - examples/direct_coerce_syntax/workflow.yml
213
259
  - examples/dot_notation/README.md
260
+ - examples/dot_notation/workflow.png
214
261
  - examples/dot_notation/workflow.yml
215
262
  - examples/exit_on_error/README.md
216
263
  - examples/exit_on_error/analyze_lint_output/prompt.md
217
264
  - examples/exit_on_error/apply_fixes/prompt.md
265
+ - examples/exit_on_error/workflow.png
218
266
  - examples/exit_on_error/workflow.yml
219
267
  - examples/grading/README.md
220
268
  - examples/grading/analyze_coverage/prompt.md
@@ -230,6 +278,7 @@ files:
230
278
  - examples/grading/verify_mocks_and_stubs/prompt.md
231
279
  - examples/grading/verify_test_helpers/prompt.md
232
280
  - examples/grading/workflow.md
281
+ - examples/grading/workflow.png
233
282
  - examples/grading/workflow.rb.md
234
283
  - examples/grading/workflow.ts+tsx.md
235
284
  - examples/grading/workflow.yml
@@ -242,6 +291,7 @@ files:
242
291
  - examples/interpolation/sample.js
243
292
  - examples/interpolation/sample.rb
244
293
  - examples/interpolation/workflow.md
294
+ - examples/interpolation/workflow.png
245
295
  - examples/interpolation/workflow.yml
246
296
  - examples/iteration/IMPLEMENTATION.md
247
297
  - examples/iteration/README.md
@@ -260,8 +310,10 @@ files:
260
310
  - examples/iteration/simple_workflow.yml
261
311
  - examples/iteration/update_fix_count/prompt.md
262
312
  - examples/iteration/verify_fix/prompt.md
313
+ - examples/iteration/workflow.png
263
314
  - examples/iteration/workflow.yml
264
315
  - examples/json_handling/README.md
316
+ - examples/json_handling/workflow.png
265
317
  - examples/json_handling/workflow.yml
266
318
  - examples/mcp/README.md
267
319
  - examples/mcp/analyze_changes/prompt.md
@@ -270,17 +322,22 @@ files:
270
322
  - examples/mcp/check_data_quality/prompt.md
271
323
  - examples/mcp/check_documentation/prompt.md
272
324
  - examples/mcp/create_recommendations/prompt.md
325
+ - examples/mcp/database_workflow.png
273
326
  - examples/mcp/database_workflow.yml
327
+ - examples/mcp/env_demo/workflow.png
274
328
  - examples/mcp/env_demo/workflow.yml
275
329
  - examples/mcp/fetch_pr_context/prompt.md
276
330
  - examples/mcp/filesystem_demo/create_test_file/prompt.md
277
331
  - examples/mcp/filesystem_demo/list_files/prompt.md
278
332
  - examples/mcp/filesystem_demo/read_with_mcp/prompt.md
333
+ - examples/mcp/filesystem_demo/workflow.png
279
334
  - examples/mcp/filesystem_demo/workflow.yml
280
335
  - examples/mcp/generate_insights/prompt.md
281
336
  - examples/mcp/generate_report/prompt.md
282
337
  - examples/mcp/generate_review/prompt.md
338
+ - examples/mcp/github_workflow.png
283
339
  - examples/mcp/github_workflow.yml
340
+ - examples/mcp/multi_mcp_workflow.png
284
341
  - examples/mcp/multi_mcp_workflow.yml
285
342
  - examples/mcp/post_review/prompt.md
286
343
  - examples/mcp/save_report/prompt.md
@@ -289,10 +346,19 @@ files:
289
346
  - examples/mcp/test_filesystem/prompt.md
290
347
  - examples/mcp/test_github/prompt.md
291
348
  - examples/mcp/test_read/prompt.md
349
+ - examples/mcp/workflow.png
292
350
  - examples/mcp/workflow.yml
351
+ - examples/no_model_fallback/README.md
352
+ - examples/no_model_fallback/analyze_file/prompt.md
353
+ - examples/no_model_fallback/analyze_patterns/prompt.md
354
+ - examples/no_model_fallback/generate_report_for_md/prompt.md
355
+ - examples/no_model_fallback/generate_report_for_rb/prompt.md
356
+ - examples/no_model_fallback/sample.rb
357
+ - examples/no_model_fallback/workflow.yml
293
358
  - examples/openrouter_example/README.md
294
359
  - examples/openrouter_example/analyze_input/prompt.md
295
360
  - examples/openrouter_example/generate_response/prompt.md
361
+ - examples/openrouter_example/workflow.png
296
362
  - examples/openrouter_example/workflow.yml
297
363
  - examples/pre_post_processing/README.md
298
364
  - examples/pre_post_processing/analyze_test_file/prompt.md
@@ -305,40 +371,54 @@ files:
305
371
  - examples/pre_post_processing/pre_processing/gather_baseline_metrics/prompt.md
306
372
  - examples/pre_post_processing/pre_processing/setup_test_environment/prompt.md
307
373
  - examples/pre_post_processing/validate_changes/prompt.md
374
+ - examples/pre_post_processing/workflow.png
308
375
  - examples/pre_post_processing/workflow.yml
309
376
  - examples/rspec_to_minitest/README.md
310
377
  - examples/rspec_to_minitest/analyze_spec/prompt.md
311
378
  - examples/rspec_to_minitest/create_minitest/prompt.md
312
379
  - examples/rspec_to_minitest/run_and_improve/prompt.md
313
380
  - examples/rspec_to_minitest/workflow.md
381
+ - examples/rspec_to_minitest/workflow.png
314
382
  - examples/rspec_to_minitest/workflow.yml
315
383
  - examples/shared_config/README.md
384
+ - examples/shared_config/example_with_shared_config/workflow.png
316
385
  - examples/shared_config/example_with_shared_config/workflow.yml
386
+ - examples/shared_config/shared.png
317
387
  - examples/shared_config/shared.yml
318
388
  - examples/single_target_prepost/README.md
319
389
  - examples/single_target_prepost/post_processing/output.txt
320
390
  - examples/single_target_prepost/pre_processing/gather_dependencies/prompt.md
391
+ - examples/single_target_prepost/workflow.png
321
392
  - examples/single_target_prepost/workflow.yml
322
393
  - examples/smart_coercion_defaults/README.md
394
+ - examples/smart_coercion_defaults/workflow.png
323
395
  - examples/smart_coercion_defaults/workflow.yml
324
396
  - examples/step_configuration/README.md
397
+ - examples/step_configuration/workflow.png
325
398
  - examples/step_configuration/workflow.yml
399
+ - examples/swarm_example.yml
326
400
  - examples/tool_config_example/README.md
327
401
  - examples/tool_config_example/example_step/prompt.md
402
+ - examples/tool_config_example/workflow.png
328
403
  - examples/tool_config_example/workflow.yml
329
404
  - examples/user_input/README.md
330
405
  - examples/user_input/funny_name/create_backstory/prompt.md
406
+ - examples/user_input/funny_name/workflow.png
331
407
  - examples/user_input/funny_name/workflow.yml
332
408
  - examples/user_input/generate_summary/prompt.md
409
+ - examples/user_input/simple_input_demo/workflow.png
333
410
  - examples/user_input/simple_input_demo/workflow.yml
411
+ - examples/user_input/survey_workflow.png
334
412
  - examples/user_input/survey_workflow.yml
335
413
  - examples/user_input/welcome_message/prompt.md
414
+ - examples/user_input/workflow.png
336
415
  - examples/user_input/workflow.yml
337
416
  - examples/workflow_generator/README.md
338
417
  - examples/workflow_generator/analyze_user_request/prompt.md
339
418
  - examples/workflow_generator/create_workflow_files/prompt.md
340
419
  - examples/workflow_generator/get_user_input/prompt.md
341
420
  - examples/workflow_generator/info_from_roast.rb
421
+ - examples/workflow_generator/workflow.png
342
422
  - examples/workflow_generator/workflow.yml
343
423
  - exe/roast
344
424
  - gemfiles/activesupport7.gemfile
@@ -351,6 +431,7 @@ files:
351
431
  - lib/roast/helpers/minitest_coverage_runner.rb
352
432
  - lib/roast/helpers/path_resolver.rb
353
433
  - lib/roast/helpers/prompt_loader.rb
434
+ - lib/roast/helpers/timeout_handler.rb
354
435
  - lib/roast/initializers.rb
355
436
  - lib/roast/resources.rb
356
437
  - lib/roast/resources/api_resource.rb
@@ -359,15 +440,20 @@ files:
359
440
  - lib/roast/resources/file_resource.rb
360
441
  - lib/roast/resources/none_resource.rb
361
442
  - lib/roast/resources/url_resource.rb
443
+ - lib/roast/services/context_threshold_checker.rb
444
+ - lib/roast/services/token_counting_service.rb
362
445
  - lib/roast/tools.rb
446
+ - lib/roast/tools/apply_diff.rb
363
447
  - lib/roast/tools/ask_user.rb
364
448
  - lib/roast/tools/bash.rb
365
449
  - lib/roast/tools/cmd.rb
366
450
  - lib/roast/tools/coding_agent.rb
451
+ - lib/roast/tools/context_summarizer.rb
367
452
  - lib/roast/tools/grep.rb
368
453
  - lib/roast/tools/helpers/coding_agent_message_formatter.rb
369
454
  - lib/roast/tools/read_file.rb
370
455
  - lib/roast/tools/search_file.rb
456
+ - lib/roast/tools/swarm.rb
371
457
  - lib/roast/tools/update_files.rb
372
458
  - lib/roast/tools/write_file.rb
373
459
  - lib/roast/value_objects.rb
@@ -390,6 +476,7 @@ files:
390
476
  - lib/roast/workflow/configuration.rb
391
477
  - lib/roast/workflow/configuration_loader.rb
392
478
  - lib/roast/workflow/configuration_parser.rb
479
+ - lib/roast/workflow/context_manager.rb
393
480
  - lib/roast/workflow/context_path_resolver.rb
394
481
  - lib/roast/workflow/dot_access_hash.rb
395
482
  - lib/roast/workflow/each_step.rb
@@ -410,11 +497,15 @@ files:
410
497
  - lib/roast/workflow/replay_handler.rb
411
498
  - lib/roast/workflow/resource_resolver.rb
412
499
  - lib/roast/workflow/session_manager.rb
500
+ - lib/roast/workflow/sqlite_state_repository.rb
413
501
  - lib/roast/workflow/state_manager.rb
414
502
  - lib/roast/workflow/state_repository.rb
503
+ - lib/roast/workflow/state_repository_factory.rb
504
+ - lib/roast/workflow/step_completion_reporter.rb
415
505
  - lib/roast/workflow/step_executor_coordinator.rb
416
506
  - lib/roast/workflow/step_executor_factory.rb
417
507
  - lib/roast/workflow/step_executor_registry.rb
508
+ - lib/roast/workflow/step_executor_with_reporting.rb
418
509
  - lib/roast/workflow/step_executors/base_step_executor.rb
419
510
  - lib/roast/workflow/step_executors/hash_step_executor.rb
420
511
  - lib/roast/workflow/step_executors/parallel_step_executor.rb
@@ -422,15 +513,24 @@ files:
422
513
  - lib/roast/workflow/step_factory.rb
423
514
  - lib/roast/workflow/step_finder.rb
424
515
  - lib/roast/workflow/step_loader.rb
516
+ - lib/roast/workflow/step_name_extractor.rb
425
517
  - lib/roast/workflow/step_orchestrator.rb
426
518
  - lib/roast/workflow/step_runner.rb
427
519
  - lib/roast/workflow/step_type_resolver.rb
520
+ - lib/roast/workflow/validation_command.rb
428
521
  - lib/roast/workflow/validator.rb
522
+ - lib/roast/workflow/validators/base_validator.rb
523
+ - lib/roast/workflow/validators/dependency_validator.rb
524
+ - lib/roast/workflow/validators/linting_validator.rb
525
+ - lib/roast/workflow/validators/schema_validator.rb
526
+ - lib/roast/workflow/validators/step_collector.rb
527
+ - lib/roast/workflow/validators/validation_orchestrator.rb
429
528
  - lib/roast/workflow/workflow_context.rb
430
529
  - lib/roast/workflow/workflow_execution_context.rb
431
530
  - lib/roast/workflow/workflow_executor.rb
432
531
  - lib/roast/workflow/workflow_initializer.rb
433
532
  - lib/roast/workflow/workflow_runner.rb
533
+ - lib/roast/workflow_diagram_generator.rb
434
534
  - package-lock.json
435
535
  - roast.gemspec
436
536
  - schema/workflow.json