roast-ai 0.4.10 → 0.5.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/.claude/commands/docs/write-comments.md +36 -0
- data/.github/CODEOWNERS +1 -1
- data/.github/workflows/ci.yaml +10 -6
- data/.gitignore +0 -1
- data/.rubocop.yml +7 -1
- data/CLAUDE.md +2 -2
- data/CONTRIBUTING.md +2 -0
- data/Gemfile +19 -18
- data/Gemfile.lock +35 -58
- data/README.md +118 -1432
- data/README_LEGACY.md +1464 -0
- data/Rakefile +39 -4
- data/dev.yml +29 -0
- data/dsl/agent_sessions.rb +20 -0
- data/dsl/async_cogs.rb +49 -0
- data/dsl/async_cogs_complex.rb +67 -0
- data/dsl/call.rb +44 -0
- data/dsl/collect_from.rb +72 -0
- data/dsl/json_output.rb +28 -0
- data/dsl/map.rb +55 -0
- data/dsl/map_reduce.rb +37 -0
- data/dsl/map_with_index.rb +49 -0
- data/dsl/next_break.rb +40 -0
- data/dsl/next_break_parallel.rb +44 -0
- data/dsl/outputs.rb +39 -0
- data/dsl/outputs_bang.rb +36 -0
- data/dsl/parallel_map.rb +37 -0
- data/dsl/prompts/simple_prompt.md.erb +3 -0
- data/dsl/prototype.rb +5 -7
- data/dsl/repeat_loop_results.rb +53 -0
- data/dsl/ruby_cog.rb +72 -0
- data/dsl/simple_agent.rb +18 -0
- data/dsl/simple_chat.rb +15 -1
- data/dsl/simple_repeat.rb +29 -0
- data/dsl/skip.rb +36 -0
- data/dsl/step_communication.rb +2 -3
- data/dsl/targets_and_params.rb +57 -0
- data/dsl/temperature.rb +17 -0
- data/dsl/temporary_directory.rb +22 -0
- data/dsl/tutorial/01_your_first_workflow/README.md +179 -0
- data/dsl/tutorial/01_your_first_workflow/configured_chat.rb +33 -0
- data/dsl/tutorial/01_your_first_workflow/hello.rb +23 -0
- data/dsl/tutorial/02_chaining_cogs/README.md +310 -0
- data/dsl/tutorial/02_chaining_cogs/code_review.rb +104 -0
- data/dsl/tutorial/02_chaining_cogs/session_resumption.rb +92 -0
- data/dsl/tutorial/02_chaining_cogs/simple_chain.rb +84 -0
- data/dsl/tutorial/03_targets_and_params/README.md +230 -0
- data/dsl/tutorial/03_targets_and_params/multiple_targets.rb +65 -0
- data/dsl/tutorial/03_targets_and_params/single_target.rb +65 -0
- data/dsl/tutorial/04_configuration_options/README.md +209 -0
- data/dsl/tutorial/04_configuration_options/control_display_and_temperature.rb +104 -0
- data/dsl/tutorial/04_configuration_options/simple_config.rb +68 -0
- data/dsl/tutorial/05_control_flow/README.md +156 -0
- data/dsl/tutorial/05_control_flow/conditional_execution.rb +62 -0
- data/dsl/tutorial/05_control_flow/handling_failures.rb +77 -0
- data/dsl/tutorial/06_reusable_scopes/README.md +172 -0
- data/dsl/tutorial/06_reusable_scopes/accessing_scope_outputs.rb +126 -0
- data/dsl/tutorial/06_reusable_scopes/basic_scope.rb +63 -0
- data/dsl/tutorial/06_reusable_scopes/parameterized_scope.rb +78 -0
- data/dsl/tutorial/07_processing_collections/README.md +152 -0
- data/dsl/tutorial/07_processing_collections/basic_map.rb +70 -0
- data/dsl/tutorial/07_processing_collections/parallel_map.rb +74 -0
- data/dsl/tutorial/08_iterative_workflows/README.md +231 -0
- data/dsl/tutorial/08_iterative_workflows/basic_repeat.rb +57 -0
- data/dsl/tutorial/08_iterative_workflows/conditional_break.rb +57 -0
- data/dsl/tutorial/09_async_cogs/README.md +197 -0
- data/dsl/tutorial/09_async_cogs/basic_async.rb +38 -0
- data/dsl/tutorial/README.md +222 -0
- data/dsl/working_directory.rb +16 -0
- data/exe/roast +1 -1
- data/internal/documentation/architectural-notes.md +115 -0
- data/internal/documentation/doc-comments-external.md +686 -0
- data/internal/documentation/doc-comments-internal.md +342 -0
- data/internal/documentation/doc-comments.md +211 -0
- data/lib/roast/dsl/cog/config.rb +274 -3
- data/lib/roast/dsl/cog/input.rb +53 -10
- data/lib/roast/dsl/cog/output.rb +297 -8
- data/lib/roast/dsl/cog/registry.rb +35 -3
- data/lib/roast/dsl/cog/stack.rb +1 -1
- data/lib/roast/dsl/cog/store.rb +5 -5
- data/lib/roast/dsl/cog.rb +70 -14
- data/lib/roast/dsl/cog_input_context.rb +36 -1
- data/lib/roast/dsl/cog_input_manager.rb +116 -7
- data/lib/roast/dsl/cogs/agent/config.rb +465 -0
- data/lib/roast/dsl/cogs/agent/input.rb +81 -0
- data/lib/roast/dsl/cogs/agent/output.rb +59 -0
- data/lib/roast/dsl/cogs/agent/provider.rb +51 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/claude_invocation.rb +185 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/message.rb +73 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/assistant_message.rb +36 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/result_message.rb +61 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/system_message.rb +47 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/text_message.rb +36 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/tool_result_message.rb +47 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/tool_use_message.rb +46 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/unknown_message.rb +27 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/messages/user_message.rb +37 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/tool_result.rb +51 -0
- data/lib/roast/dsl/cogs/agent/providers/claude/tool_use.rb +48 -0
- data/lib/roast/dsl/cogs/agent/providers/claude.rb +31 -0
- data/lib/roast/dsl/cogs/agent/stats.rb +92 -0
- data/lib/roast/dsl/cogs/agent/usage.rb +62 -0
- data/lib/roast/dsl/cogs/agent.rb +75 -0
- data/lib/roast/dsl/cogs/chat/config.rb +453 -0
- data/lib/roast/dsl/cogs/chat/input.rb +92 -0
- data/lib/roast/dsl/cogs/chat/output.rb +64 -0
- data/lib/roast/dsl/cogs/chat/session.rb +68 -0
- data/lib/roast/dsl/cogs/chat.rb +59 -56
- data/lib/roast/dsl/cogs/cmd.rb +248 -61
- data/lib/roast/dsl/cogs/ruby.rb +171 -0
- data/lib/roast/dsl/command_runner.rb +191 -0
- data/lib/roast/dsl/config_manager.rb +58 -11
- data/lib/roast/dsl/control_flow.rb +41 -0
- data/lib/roast/dsl/execution_manager.rb +162 -32
- data/lib/roast/dsl/nil_assertions.rb +23 -0
- data/lib/roast/dsl/system_cog/params.rb +32 -0
- data/lib/roast/dsl/system_cog.rb +36 -0
- data/lib/roast/dsl/system_cogs/call.rb +162 -0
- data/lib/roast/dsl/system_cogs/map.rb +448 -0
- data/lib/roast/dsl/system_cogs/repeat.rb +242 -0
- data/lib/roast/dsl/workflow.rb +26 -16
- data/lib/roast/dsl/workflow_context.rb +20 -0
- data/lib/roast/dsl/workflow_params.rb +24 -0
- data/lib/roast/sorbet_runtime_stub.rb +154 -0
- data/lib/roast/tools/apply_diff.rb +1 -3
- data/lib/roast/tools/cmd.rb +4 -3
- data/lib/roast/tools/read_file.rb +1 -1
- data/lib/roast/tools/update_files.rb +1 -1
- data/lib/roast/tools/write_file.rb +1 -1
- data/lib/roast/version.rb +1 -1
- data/lib/roast/workflow/base_workflow.rb +4 -0
- data/lib/roast/workflow/step_loader.rb +14 -2
- data/lib/roast-ai.rb +4 -0
- data/lib/roast.rb +58 -21
- data/{roast.gemspec → roast-ai.gemspec} +9 -13
- data/sorbet/rbi/gems/async@2.34.0.rbi +1577 -0
- data/sorbet/rbi/gems/cli-kit@5.2.0.rbi +2063 -0
- data/sorbet/rbi/gems/{cli-ui@2.3.0.rbi → cli-ui@2.7.0-6bdefd1d06305e5d6ae312ac76f9c88f88658dda.rbi} +1418 -1013
- data/sorbet/rbi/gems/console@1.34.2.rbi +1193 -0
- data/sorbet/rbi/gems/fiber-annotation@0.2.0.rbi +50 -0
- data/sorbet/rbi/gems/fiber-local@1.1.0.rbi +35 -0
- data/sorbet/rbi/gems/fiber-storage@1.0.1.rbi +41 -0
- data/sorbet/rbi/gems/io-event@1.14.0.rbi +724 -0
- data/sorbet/rbi/gems/metrics@0.15.0.rbi +9 -0
- data/sorbet/rbi/gems/traces@0.18.2.rbi +9 -0
- data/sorbet/rbi/shims/lib/roast/dsl/cog_input_context.rbi +1185 -5
- data/sorbet/rbi/shims/lib/roast/dsl/config_context.rbi +311 -5
- data/sorbet/rbi/shims/lib/roast/dsl/execution_context.rbi +486 -5
- data/sorbet/tapioca/config.yml +6 -0
- data/sorbet/tapioca/require.rb +2 -0
- metadata +157 -30
- data/dsl/less_simple.rb +0 -112
- data/dsl/scoped_executors.rb +0 -28
- data/dsl/simple.rb +0 -8
- data/lib/roast/dsl/cogs/execute.rb +0 -46
- data/lib/roast/dsl/cogs/graph.rb +0 -53
- data/sorbet/rbi/gems/cgi@0.5.0.rbi +0 -2961
- data/sorbet/rbi/gems/claude_swarm@0.1.19.rbi +0 -568
- data/sorbet/rbi/gems/cli-kit@5.0.1.rbi +0 -1991
- data/sorbet/rbi/gems/dry-configurable@1.3.0.rbi +0 -672
- data/sorbet/rbi/gems/dry-core@1.1.0.rbi +0 -1894
- data/sorbet/rbi/gems/dry-inflector@1.2.0.rbi +0 -659
- data/sorbet/rbi/gems/dry-initializer@3.2.0.rbi +0 -781
- data/sorbet/rbi/gems/dry-logic@1.6.0.rbi +0 -1127
- data/sorbet/rbi/gems/dry-schema@1.14.1.rbi +0 -3727
- data/sorbet/rbi/gems/dry-types@1.8.3.rbi +0 -3969
- data/sorbet/rbi/gems/fast-mcp-annotations@1.5.3.rbi +0 -1588
- data/sorbet/rbi/gems/mime-types-data@3.2025.0617.rbi +0 -136
- data/sorbet/rbi/gems/mime-types@3.7.0.rbi +0 -1342
- data/sorbet/rbi/gems/rack@2.2.19.rbi +0 -5676
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +0 -435
- data/sorbet/rbi/gems/yard@0.9.37.rbi +0 -18492
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.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Shopify
|
|
@@ -23,34 +23,62 @@ dependencies:
|
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '7.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: async
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.34'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.34'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: benchmark
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.4.1
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 0.4.1
|
|
26
54
|
- !ruby/object:Gem::Dependency
|
|
27
55
|
name: cli-kit
|
|
28
56
|
requirement: !ruby/object:Gem::Requirement
|
|
29
57
|
requirements:
|
|
30
58
|
- - "~>"
|
|
31
59
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '5.
|
|
60
|
+
version: '5.2'
|
|
33
61
|
type: :runtime
|
|
34
62
|
prerelease: false
|
|
35
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
64
|
requirements:
|
|
37
65
|
- - "~>"
|
|
38
66
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '5.
|
|
67
|
+
version: '5.2'
|
|
40
68
|
- !ruby/object:Gem::Dependency
|
|
41
69
|
name: cli-ui
|
|
42
70
|
requirement: !ruby/object:Gem::Requirement
|
|
43
71
|
requirements:
|
|
44
|
-
- -
|
|
72
|
+
- - "~>"
|
|
45
73
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 2.
|
|
74
|
+
version: '2.7'
|
|
47
75
|
type: :runtime
|
|
48
76
|
prerelease: false
|
|
49
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
78
|
requirements:
|
|
51
|
-
- -
|
|
79
|
+
- - "~>"
|
|
52
80
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 2.
|
|
81
|
+
version: '2.7'
|
|
54
82
|
- !ruby/object:Gem::Dependency
|
|
55
83
|
name: diff-lcs
|
|
56
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -107,6 +135,20 @@ dependencies:
|
|
|
107
135
|
- - "~>"
|
|
108
136
|
- !ruby/object:Gem::Version
|
|
109
137
|
version: 1.0.2
|
|
138
|
+
- !ruby/object:Gem::Dependency
|
|
139
|
+
name: rake
|
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - "~>"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: 13.3.0
|
|
145
|
+
type: :runtime
|
|
146
|
+
prerelease: false
|
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - "~>"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: 13.3.0
|
|
110
152
|
- !ruby/object:Gem::Dependency
|
|
111
153
|
name: ruby-graphviz
|
|
112
154
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -186,6 +228,7 @@ executables:
|
|
|
186
228
|
extensions: []
|
|
187
229
|
extra_rdoc_files: []
|
|
188
230
|
files:
|
|
231
|
+
- ".claude/commands/docs/write-comments.md"
|
|
189
232
|
- ".claude/settings.json"
|
|
190
233
|
- ".github/CODEOWNERS"
|
|
191
234
|
- ".github/workflows/ci.yaml"
|
|
@@ -202,6 +245,7 @@ files:
|
|
|
202
245
|
- Gemfile.lock
|
|
203
246
|
- LICENSE.md
|
|
204
247
|
- README.md
|
|
248
|
+
- README_LEGACY.md
|
|
205
249
|
- Rakefile
|
|
206
250
|
- bin/console
|
|
207
251
|
- bin/roast
|
|
@@ -211,15 +255,29 @@ files:
|
|
|
211
255
|
- bin/srb-rbi
|
|
212
256
|
- bin/tapioca
|
|
213
257
|
- claude-swarm.yml
|
|
258
|
+
- dev.yml
|
|
214
259
|
- docs/AGENT_STEPS.md
|
|
215
260
|
- docs/INSTRUMENTATION.md
|
|
216
261
|
- docs/ITERATION_SYNTAX.md
|
|
217
262
|
- docs/VALIDATION.md
|
|
263
|
+
- dsl/agent_sessions.rb
|
|
264
|
+
- dsl/async_cogs.rb
|
|
265
|
+
- dsl/async_cogs_complex.rb
|
|
266
|
+
- dsl/call.rb
|
|
267
|
+
- dsl/collect_from.rb
|
|
218
268
|
- dsl/demo/Gemfile
|
|
219
269
|
- dsl/demo/Gemfile.lock
|
|
220
270
|
- dsl/demo/cogs/local.rb
|
|
221
271
|
- dsl/demo/simple_external_cog.rb
|
|
222
|
-
- dsl/
|
|
272
|
+
- dsl/json_output.rb
|
|
273
|
+
- dsl/map.rb
|
|
274
|
+
- dsl/map_reduce.rb
|
|
275
|
+
- dsl/map_with_index.rb
|
|
276
|
+
- dsl/next_break.rb
|
|
277
|
+
- dsl/next_break_parallel.rb
|
|
278
|
+
- dsl/outputs.rb
|
|
279
|
+
- dsl/outputs_bang.rb
|
|
280
|
+
- dsl/parallel_map.rb
|
|
223
281
|
- dsl/plugin-gem-example/.gitignore
|
|
224
282
|
- dsl/plugin-gem-example/Gemfile
|
|
225
283
|
- dsl/plugin-gem-example/Gemfile.lock
|
|
@@ -228,11 +286,48 @@ files:
|
|
|
228
286
|
- dsl/plugin-gem-example/lib/simple.rb
|
|
229
287
|
- dsl/plugin-gem-example/lib/version.rb
|
|
230
288
|
- dsl/plugin-gem-example/plugin-gem-example.gemspec
|
|
289
|
+
- dsl/prompts/simple_prompt.md.erb
|
|
231
290
|
- dsl/prototype.rb
|
|
232
|
-
- dsl/
|
|
233
|
-
- dsl/
|
|
291
|
+
- dsl/repeat_loop_results.rb
|
|
292
|
+
- dsl/ruby_cog.rb
|
|
293
|
+
- dsl/simple_agent.rb
|
|
234
294
|
- dsl/simple_chat.rb
|
|
295
|
+
- dsl/simple_repeat.rb
|
|
296
|
+
- dsl/skip.rb
|
|
235
297
|
- dsl/step_communication.rb
|
|
298
|
+
- dsl/targets_and_params.rb
|
|
299
|
+
- dsl/temperature.rb
|
|
300
|
+
- dsl/temporary_directory.rb
|
|
301
|
+
- dsl/tutorial/01_your_first_workflow/README.md
|
|
302
|
+
- dsl/tutorial/01_your_first_workflow/configured_chat.rb
|
|
303
|
+
- dsl/tutorial/01_your_first_workflow/hello.rb
|
|
304
|
+
- dsl/tutorial/02_chaining_cogs/README.md
|
|
305
|
+
- dsl/tutorial/02_chaining_cogs/code_review.rb
|
|
306
|
+
- dsl/tutorial/02_chaining_cogs/session_resumption.rb
|
|
307
|
+
- dsl/tutorial/02_chaining_cogs/simple_chain.rb
|
|
308
|
+
- dsl/tutorial/03_targets_and_params/README.md
|
|
309
|
+
- dsl/tutorial/03_targets_and_params/multiple_targets.rb
|
|
310
|
+
- dsl/tutorial/03_targets_and_params/single_target.rb
|
|
311
|
+
- dsl/tutorial/04_configuration_options/README.md
|
|
312
|
+
- dsl/tutorial/04_configuration_options/control_display_and_temperature.rb
|
|
313
|
+
- dsl/tutorial/04_configuration_options/simple_config.rb
|
|
314
|
+
- dsl/tutorial/05_control_flow/README.md
|
|
315
|
+
- dsl/tutorial/05_control_flow/conditional_execution.rb
|
|
316
|
+
- dsl/tutorial/05_control_flow/handling_failures.rb
|
|
317
|
+
- dsl/tutorial/06_reusable_scopes/README.md
|
|
318
|
+
- dsl/tutorial/06_reusable_scopes/accessing_scope_outputs.rb
|
|
319
|
+
- dsl/tutorial/06_reusable_scopes/basic_scope.rb
|
|
320
|
+
- dsl/tutorial/06_reusable_scopes/parameterized_scope.rb
|
|
321
|
+
- dsl/tutorial/07_processing_collections/README.md
|
|
322
|
+
- dsl/tutorial/07_processing_collections/basic_map.rb
|
|
323
|
+
- dsl/tutorial/07_processing_collections/parallel_map.rb
|
|
324
|
+
- dsl/tutorial/08_iterative_workflows/README.md
|
|
325
|
+
- dsl/tutorial/08_iterative_workflows/basic_repeat.rb
|
|
326
|
+
- dsl/tutorial/08_iterative_workflows/conditional_break.rb
|
|
327
|
+
- dsl/tutorial/09_async_cogs/README.md
|
|
328
|
+
- dsl/tutorial/09_async_cogs/basic_async.rb
|
|
329
|
+
- dsl/tutorial/README.md
|
|
330
|
+
- dsl/working_directory.rb
|
|
236
331
|
- examples/README.md
|
|
237
332
|
- examples/available_tools_demo/README.md
|
|
238
333
|
- examples/available_tools_demo/analyze_files/prompt.md
|
|
@@ -256,6 +351,11 @@ files:
|
|
|
256
351
|
- exe/roast
|
|
257
352
|
- gemfiles/activesupport7.gemfile
|
|
258
353
|
- gemfiles/activesupport8.gemfile
|
|
354
|
+
- internal/documentation/architectural-notes.md
|
|
355
|
+
- internal/documentation/doc-comments-external.md
|
|
356
|
+
- internal/documentation/doc-comments-internal.md
|
|
357
|
+
- internal/documentation/doc-comments.md
|
|
358
|
+
- lib/roast-ai.rb
|
|
259
359
|
- lib/roast.rb
|
|
260
360
|
- lib/roast/dsl.rb
|
|
261
361
|
- lib/roast/dsl/cog.rb
|
|
@@ -267,15 +367,48 @@ files:
|
|
|
267
367
|
- lib/roast/dsl/cog/store.rb
|
|
268
368
|
- lib/roast/dsl/cog_input_context.rb
|
|
269
369
|
- lib/roast/dsl/cog_input_manager.rb
|
|
370
|
+
- lib/roast/dsl/cogs/agent.rb
|
|
371
|
+
- lib/roast/dsl/cogs/agent/config.rb
|
|
372
|
+
- lib/roast/dsl/cogs/agent/input.rb
|
|
373
|
+
- lib/roast/dsl/cogs/agent/output.rb
|
|
374
|
+
- lib/roast/dsl/cogs/agent/provider.rb
|
|
375
|
+
- lib/roast/dsl/cogs/agent/providers/claude.rb
|
|
376
|
+
- lib/roast/dsl/cogs/agent/providers/claude/claude_invocation.rb
|
|
377
|
+
- lib/roast/dsl/cogs/agent/providers/claude/message.rb
|
|
378
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/assistant_message.rb
|
|
379
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/result_message.rb
|
|
380
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/system_message.rb
|
|
381
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/text_message.rb
|
|
382
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/tool_result_message.rb
|
|
383
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/tool_use_message.rb
|
|
384
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/unknown_message.rb
|
|
385
|
+
- lib/roast/dsl/cogs/agent/providers/claude/messages/user_message.rb
|
|
386
|
+
- lib/roast/dsl/cogs/agent/providers/claude/tool_result.rb
|
|
387
|
+
- lib/roast/dsl/cogs/agent/providers/claude/tool_use.rb
|
|
388
|
+
- lib/roast/dsl/cogs/agent/stats.rb
|
|
389
|
+
- lib/roast/dsl/cogs/agent/usage.rb
|
|
270
390
|
- lib/roast/dsl/cogs/chat.rb
|
|
391
|
+
- lib/roast/dsl/cogs/chat/config.rb
|
|
392
|
+
- lib/roast/dsl/cogs/chat/input.rb
|
|
393
|
+
- lib/roast/dsl/cogs/chat/output.rb
|
|
394
|
+
- lib/roast/dsl/cogs/chat/session.rb
|
|
271
395
|
- lib/roast/dsl/cogs/cmd.rb
|
|
272
|
-
- lib/roast/dsl/cogs/
|
|
273
|
-
- lib/roast/dsl/
|
|
396
|
+
- lib/roast/dsl/cogs/ruby.rb
|
|
397
|
+
- lib/roast/dsl/command_runner.rb
|
|
274
398
|
- lib/roast/dsl/config_context.rb
|
|
275
399
|
- lib/roast/dsl/config_manager.rb
|
|
400
|
+
- lib/roast/dsl/control_flow.rb
|
|
276
401
|
- lib/roast/dsl/execution_context.rb
|
|
277
402
|
- lib/roast/dsl/execution_manager.rb
|
|
403
|
+
- lib/roast/dsl/nil_assertions.rb
|
|
404
|
+
- lib/roast/dsl/system_cog.rb
|
|
405
|
+
- lib/roast/dsl/system_cog/params.rb
|
|
406
|
+
- lib/roast/dsl/system_cogs/call.rb
|
|
407
|
+
- lib/roast/dsl/system_cogs/map.rb
|
|
408
|
+
- lib/roast/dsl/system_cogs/repeat.rb
|
|
278
409
|
- lib/roast/dsl/workflow.rb
|
|
410
|
+
- lib/roast/dsl/workflow_context.rb
|
|
411
|
+
- lib/roast/dsl/workflow_params.rb
|
|
279
412
|
- lib/roast/error.rb
|
|
280
413
|
- lib/roast/errors.rb
|
|
281
414
|
- lib/roast/factories/api_provider_factory.rb
|
|
@@ -301,6 +434,7 @@ files:
|
|
|
301
434
|
- lib/roast/resources/url_resource.rb
|
|
302
435
|
- lib/roast/services/context_threshold_checker.rb
|
|
303
436
|
- lib/roast/services/token_counting_service.rb
|
|
437
|
+
- lib/roast/sorbet_runtime_stub.rb
|
|
304
438
|
- lib/roast/tools.rb
|
|
305
439
|
- lib/roast/tools/apply_diff.rb
|
|
306
440
|
- lib/roast/tools/ask_user.rb
|
|
@@ -390,7 +524,7 @@ files:
|
|
|
390
524
|
- lib/roast/workflow/workflow_initializer.rb
|
|
391
525
|
- lib/roast/workflow/workflow_runner.rb
|
|
392
526
|
- lib/roast/workflow_diagram_generator.rb
|
|
393
|
-
- roast.gemspec
|
|
527
|
+
- roast-ai.gemspec
|
|
394
528
|
- rubocop/cop/roast.rb
|
|
395
529
|
- rubocop/cop/roast/use_cmd_runner.rb
|
|
396
530
|
- schema/workflow.json
|
|
@@ -409,42 +543,38 @@ files:
|
|
|
409
543
|
- sorbet/rbi/gems/activesupport@8.0.2.rbi
|
|
410
544
|
- sorbet/rbi/gems/addressable@2.8.7.rbi
|
|
411
545
|
- sorbet/rbi/gems/ast@2.4.3.rbi
|
|
546
|
+
- sorbet/rbi/gems/async@2.34.0.rbi
|
|
412
547
|
- sorbet/rbi/gems/base64@0.3.0.rbi
|
|
413
548
|
- sorbet/rbi/gems/benchmark@0.4.1.rbi
|
|
414
549
|
- sorbet/rbi/gems/bigdecimal@3.2.2.rbi
|
|
415
|
-
- sorbet/rbi/gems/
|
|
416
|
-
- sorbet/rbi/gems/
|
|
417
|
-
- sorbet/rbi/gems/cli-kit@5.0.1.rbi
|
|
418
|
-
- sorbet/rbi/gems/cli-ui@2.3.0.rbi
|
|
550
|
+
- sorbet/rbi/gems/cli-kit@5.2.0.rbi
|
|
551
|
+
- sorbet/rbi/gems/cli-ui@2.7.0-6bdefd1d06305e5d6ae312ac76f9c88f88658dda.rbi
|
|
419
552
|
- sorbet/rbi/gems/coderay@1.1.3.rbi
|
|
420
553
|
- sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi
|
|
421
554
|
- sorbet/rbi/gems/connection_pool@2.5.3.rbi
|
|
555
|
+
- sorbet/rbi/gems/console@1.34.2.rbi
|
|
422
556
|
- sorbet/rbi/gems/crack@1.0.0.rbi
|
|
423
557
|
- sorbet/rbi/gems/diff-lcs@1.6.2.rbi
|
|
424
558
|
- sorbet/rbi/gems/docile@1.4.1.rbi
|
|
425
559
|
- sorbet/rbi/gems/dotenv@3.1.8.rbi
|
|
426
560
|
- sorbet/rbi/gems/drb@2.2.3.rbi
|
|
427
|
-
- sorbet/rbi/gems/dry-configurable@1.3.0.rbi
|
|
428
|
-
- sorbet/rbi/gems/dry-core@1.1.0.rbi
|
|
429
|
-
- sorbet/rbi/gems/dry-inflector@1.2.0.rbi
|
|
430
|
-
- sorbet/rbi/gems/dry-initializer@3.2.0.rbi
|
|
431
|
-
- sorbet/rbi/gems/dry-logic@1.6.0.rbi
|
|
432
|
-
- sorbet/rbi/gems/dry-schema@1.14.1.rbi
|
|
433
|
-
- sorbet/rbi/gems/dry-types@1.8.3.rbi
|
|
434
561
|
- sorbet/rbi/gems/erubi@1.13.1.rbi
|
|
435
562
|
- sorbet/rbi/gems/event_stream_parser@1.0.0.rbi
|
|
436
563
|
- sorbet/rbi/gems/faraday-multipart@1.1.1.rbi
|
|
437
564
|
- sorbet/rbi/gems/faraday-net_http@3.4.1.rbi
|
|
438
565
|
- sorbet/rbi/gems/faraday-retry@2.3.2.rbi
|
|
439
566
|
- sorbet/rbi/gems/faraday@2.13.1.rbi
|
|
440
|
-
- sorbet/rbi/gems/fast-mcp-annotations@1.5.3.rbi
|
|
441
567
|
- sorbet/rbi/gems/ffi@1.17.2.rbi
|
|
568
|
+
- sorbet/rbi/gems/fiber-annotation@0.2.0.rbi
|
|
569
|
+
- sorbet/rbi/gems/fiber-local@1.1.0.rbi
|
|
570
|
+
- sorbet/rbi/gems/fiber-storage@1.0.1.rbi
|
|
442
571
|
- sorbet/rbi/gems/formatador@1.1.0.rbi
|
|
443
572
|
- sorbet/rbi/gems/guard-compat@1.2.1.rbi
|
|
444
573
|
- sorbet/rbi/gems/guard-minitest@2.4.6.rbi
|
|
445
574
|
- sorbet/rbi/gems/guard@2.19.1.rbi
|
|
446
575
|
- sorbet/rbi/gems/hashdiff@1.2.0.rbi
|
|
447
576
|
- sorbet/rbi/gems/i18n@1.14.7.rbi
|
|
577
|
+
- sorbet/rbi/gems/io-event@1.14.0.rbi
|
|
448
578
|
- sorbet/rbi/gems/json-schema@5.1.1.rbi
|
|
449
579
|
- sorbet/rbi/gems/json@2.12.2.rbi
|
|
450
580
|
- sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi
|
|
@@ -454,8 +584,7 @@ files:
|
|
|
454
584
|
- sorbet/rbi/gems/lumberjack@1.2.10.rbi
|
|
455
585
|
- sorbet/rbi/gems/marcel@1.1.0.rbi
|
|
456
586
|
- sorbet/rbi/gems/method_source@1.1.0.rbi
|
|
457
|
-
- sorbet/rbi/gems/
|
|
458
|
-
- sorbet/rbi/gems/mime-types@3.7.0.rbi
|
|
587
|
+
- sorbet/rbi/gems/metrics@0.15.0.rbi
|
|
459
588
|
- sorbet/rbi/gems/minitest-rg@5.3.0.rbi
|
|
460
589
|
- sorbet/rbi/gems/minitest@5.25.5.rbi
|
|
461
590
|
- sorbet/rbi/gems/mocha@2.7.1.rbi
|
|
@@ -472,7 +601,6 @@ files:
|
|
|
472
601
|
- sorbet/rbi/gems/pry@0.15.2.rbi
|
|
473
602
|
- sorbet/rbi/gems/public_suffix@6.0.2.rbi
|
|
474
603
|
- sorbet/rbi/gems/racc@1.8.1.rbi
|
|
475
|
-
- sorbet/rbi/gems/rack@2.2.19.rbi
|
|
476
604
|
- sorbet/rbi/gems/rainbow@3.1.1.rbi
|
|
477
605
|
- sorbet/rbi/gems/raix@1.0.2.rbi
|
|
478
606
|
- sorbet/rbi/gems/rake@13.3.0.rbi
|
|
@@ -500,14 +628,13 @@ files:
|
|
|
500
628
|
- sorbet/rbi/gems/sqlite3@2.7.0.rbi
|
|
501
629
|
- sorbet/rbi/gems/tapioca@0.16.11.rbi
|
|
502
630
|
- sorbet/rbi/gems/thor@1.4.0.rbi
|
|
631
|
+
- sorbet/rbi/gems/traces@0.18.2.rbi
|
|
503
632
|
- sorbet/rbi/gems/tzinfo@2.0.6.rbi
|
|
504
633
|
- sorbet/rbi/gems/unicode-display_width@3.1.4.rbi
|
|
505
634
|
- sorbet/rbi/gems/unicode-emoji@4.0.4.rbi
|
|
506
635
|
- sorbet/rbi/gems/uri@1.0.3.rbi
|
|
507
636
|
- sorbet/rbi/gems/vcr@6.3.1.rbi
|
|
508
637
|
- sorbet/rbi/gems/webmock@3.25.1.rbi
|
|
509
|
-
- sorbet/rbi/gems/yard-sorbet@0.9.0.rbi
|
|
510
|
-
- sorbet/rbi/gems/yard@0.9.37.rbi
|
|
511
638
|
- sorbet/rbi/gems/zeitwerk@2.7.3.rbi
|
|
512
639
|
- sorbet/rbi/shims/lib/roast/dsl/cog_input_context.rbi
|
|
513
640
|
- sorbet/rbi/shims/lib/roast/dsl/config_context.rbi
|
data/dsl/less_simple.rb
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
#### cmd
|
|
5
|
-
|
|
6
|
-
# Passing just the command to execute will run it and return the output
|
|
7
|
-
cmd <<~SHELLSTEP
|
|
8
|
-
echo "raw run without storing, should see me once""
|
|
9
|
-
SHELLSTEP
|
|
10
|
-
|
|
11
|
-
# Passing a name finds or creates an object and returns that
|
|
12
|
-
cmd_cog = cmd(:hello)
|
|
13
|
-
puts "This is our new cmd_cog named ':hello': #{cmd_cog}"
|
|
14
|
-
|
|
15
|
-
# We can set a command to run for later
|
|
16
|
-
cmd(:set_and_run).set("echo 'set_and_run, should see me once'")
|
|
17
|
-
cmd(:set_and_run).run
|
|
18
|
-
|
|
19
|
-
# Similarly, we can run immediately and then re-run later
|
|
20
|
-
cmd(:run_and_rerun).run("echo 'run_and_rerun, should see me twice'")
|
|
21
|
-
cmd(:run_and_rerun).run
|
|
22
|
-
|
|
23
|
-
#### graph
|
|
24
|
-
|
|
25
|
-
# We can open and re-open a graph, and then execute it
|
|
26
|
-
graph(:updatable) do |graph|
|
|
27
|
-
graph.node(:open_cmd) do |state|
|
|
28
|
-
state[:open] = cmd("echo 'From a node added in first open, should see me once'")
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
graph(:updatable) do |graph|
|
|
33
|
-
graph.node(:reopen_cmd) do |state|
|
|
34
|
-
state[:reopen] = cmd("echo 'From a node added in reopen, should see me once'")
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
graph(:yea).execute
|
|
39
|
-
|
|
40
|
-
# We can also just populate and execute a graph in one go by calling graph.execute in the block.
|
|
41
|
-
graph(:define_and_exec) do |graph|
|
|
42
|
-
graph.node(:hi) do |state|
|
|
43
|
-
state[:hi_msg] = cmd("echo 'hi msg'")
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
graph.execute
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# We can have subgraphs, because why not
|
|
50
|
-
graph(:outer) do |graph|
|
|
51
|
-
graph.subgraph(:inner) do |subgraph|
|
|
52
|
-
subgraph.node(:inner_node) do |inner_state|
|
|
53
|
-
inner_state[:foo] = cmd("echo 'inner_state foo'")
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
graph.node(:outer) do |outer_state|
|
|
58
|
-
outer_state[:bar] = cmd("echo 'outer_state bar'")
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
graph.execute
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# We can specify our own edges
|
|
65
|
-
graph(:edges) do |graph|
|
|
66
|
-
graph.node(:thing1) do |state|
|
|
67
|
-
state[:thing1] = cmd("echo 'thing1'")
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
graph.node(:thing2) do |state|
|
|
71
|
-
state[:thing2] = cmd("echo 'thing2'")
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
graph.edge(from: :START, to: :thing1)
|
|
75
|
-
graph.edge(from: :thing1, to: :thing2)
|
|
76
|
-
graph.edge(from: :thing2, to: :DONE)
|
|
77
|
-
|
|
78
|
-
graph.execute
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
# We can have parallel execution
|
|
82
|
-
graph(:parallel) do |graph|
|
|
83
|
-
graph.node(:thing1) do |state|
|
|
84
|
-
state[:thing1] = cmd("sleep 0.5 && echo 'parallel thing1'")
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
graph.node(:thing2) do |state|
|
|
88
|
-
state[:thing2] = cmd("sleep 0.5 && echo 'parallel thing2'")
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
graph.edge(from: :START, to: [:thing1, :thing2])
|
|
92
|
-
graph.edge(from: [:thing1, :thing2], to: :DONE)
|
|
93
|
-
|
|
94
|
-
graph.execute
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# We can have edges that are defined with a block
|
|
98
|
-
graph(:quantum) do |graph|
|
|
99
|
-
graph.node(:thing1) do |state|
|
|
100
|
-
state[:thing1] = cmd("echo 'quantum thing1'")
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
graph.edge(from: :START) do |_state|
|
|
104
|
-
:thing1
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
graph.edge(from: :thing1) do |_state|
|
|
108
|
-
:DONE
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
graph.execute
|
|
112
|
-
end
|
data/dsl/scoped_executors.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
#: self as Roast::DSL::Workflow
|
|
5
|
-
|
|
6
|
-
config do
|
|
7
|
-
cmd do
|
|
8
|
-
print_all!
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
execute(:capitalize_a_random_word) do
|
|
13
|
-
cmd(:word) { "shuf /usr/share/dict/words -n 1" }
|
|
14
|
-
cmd(:capitalize) do |my|
|
|
15
|
-
word = cmd(:word).out.strip
|
|
16
|
-
my.command = "sh"
|
|
17
|
-
my.args << "-c"
|
|
18
|
-
my.args << "echo '#{word}' | tr '[:lower:]' '[:upper:]'"
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
execute do
|
|
23
|
-
cmd(:before) { "echo '--> before'" }
|
|
24
|
-
execute { :capitalize_a_random_word }
|
|
25
|
-
execute { :capitalize_a_random_word }
|
|
26
|
-
execute { :capitalize_a_random_word }
|
|
27
|
-
cmd(:after) { "echo '--> after'" }
|
|
28
|
-
end
|
data/dsl/simple.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
module Roast
|
|
5
|
-
module DSL
|
|
6
|
-
module Cogs
|
|
7
|
-
class Execute < Cog
|
|
8
|
-
class Input < Cog::Input
|
|
9
|
-
#: Symbol?
|
|
10
|
-
attr_accessor :scope
|
|
11
|
-
|
|
12
|
-
#: () -> void
|
|
13
|
-
def initialize
|
|
14
|
-
super
|
|
15
|
-
@scope = nil
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
#: () -> void
|
|
19
|
-
def validate!
|
|
20
|
-
raise Cog::Input::InvalidInputError, "'scope' is required" unless scope.present?
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
#: (Symbol) -> void
|
|
24
|
-
def coerce(input_return_value)
|
|
25
|
-
self.scope = input_return_value
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
#: (Symbol, ^(Input) -> untyped, ^(Input) -> void) -> void
|
|
30
|
-
def initialize(name, cog_input_proc, trigger)
|
|
31
|
-
# NOTE: Sorbet expects the proc passed to super to be declared as taking a Cog::Input explicitly,
|
|
32
|
-
# not a subclass of Cog::Input.
|
|
33
|
-
cog_input_proc = cog_input_proc #: as ^(Cog::Input) -> untyped
|
|
34
|
-
super(name, cog_input_proc)
|
|
35
|
-
@trigger = trigger
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
#: (Input) -> Cog::Output
|
|
39
|
-
def execute(input)
|
|
40
|
-
@trigger.call(input)
|
|
41
|
-
Cog::Output.new
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/roast/dsl/cogs/graph.rb
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
module Roast
|
|
5
|
-
module DSL
|
|
6
|
-
module Cogs
|
|
7
|
-
class Graph < Roast::DSL::Cog
|
|
8
|
-
#: Proc
|
|
9
|
-
attr_reader :block
|
|
10
|
-
|
|
11
|
-
#: (Symbol) { (Cog::Input) -> untyped } -> void
|
|
12
|
-
def initialize(name, &block)
|
|
13
|
-
@name = name
|
|
14
|
-
@block = block
|
|
15
|
-
@graph = Roast::Graph.new
|
|
16
|
-
super(name, block)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
#: () -> void
|
|
20
|
-
def on_invoke
|
|
21
|
-
populate!(@graph)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
#: () -> Symbol
|
|
25
|
-
def store_id
|
|
26
|
-
@name.to_sym
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
#: (Roast::DSL::Cog) -> void
|
|
30
|
-
def update(other)
|
|
31
|
-
return unless other.is_a?(Roast::DSL::Cogs::Graph)
|
|
32
|
-
|
|
33
|
-
return if other.block.nil?
|
|
34
|
-
|
|
35
|
-
other.populate!(@graph)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Populates the provided graph in-place, with the definition of how to populate in the block
|
|
39
|
-
#: (Cog::Input) -> void
|
|
40
|
-
def populate!(graph)
|
|
41
|
-
return if @block.nil?
|
|
42
|
-
|
|
43
|
-
@block.call(graph)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
#: () -> void
|
|
47
|
-
def execute
|
|
48
|
-
@graph.execute
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|