roast-ai 1.0.2 → 1.2.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/.claude/commands/docs/write-comments.md +1 -1
  3. data/.rubocop.yml +12 -1
  4. data/Gemfile +2 -2
  5. data/Gemfile.lock +149 -34
  6. data/README.md +56 -3
  7. data/examples/agent_with_multiple_prompts.rb +27 -0
  8. data/examples/custom_logging.rb +4 -2
  9. data/examples/demo/Gemfile.lock +49 -15
  10. data/examples/plugin-gem-example/Gemfile.lock +19 -15
  11. data/examples/simple_chat.rb +1 -1
  12. data/examples/simple_pi_agent.rb +18 -0
  13. data/internal/rubocop/cop/roast/no_test_class_nesting.rb +126 -0
  14. data/internal/rubocop/rubocop-roast.yml +6 -0
  15. data/internal/workflows/maintenance/branch_docs_impact.rb +97 -0
  16. data/internal/workflows/maintenance/deprecated_models_docs_updater.rb +78 -0
  17. data/lib/roast/cog/config.rb +1 -1
  18. data/lib/roast/cog/output.rb +2 -1
  19. data/lib/roast/cog/registry.rb +3 -3
  20. data/lib/roast/cog_input_manager.rb +28 -7
  21. data/lib/roast/cogs/agent/config.rb +2 -2
  22. data/lib/roast/cogs/agent/input.rb +20 -22
  23. data/lib/roast/cogs/agent/providers/claude/claude_invocation.rb +13 -5
  24. data/lib/roast/cogs/agent/providers/claude/messages/result_message.rb +1 -1
  25. data/lib/roast/cogs/agent/providers/claude/tool_result.rb +344 -4
  26. data/lib/roast/cogs/agent/providers/claude/tool_use.rb +356 -1
  27. data/lib/roast/cogs/agent/providers/claude.rb +16 -3
  28. data/lib/roast/cogs/agent/providers/pi/messages/tool_call_message.rb +60 -0
  29. data/lib/roast/cogs/agent/providers/pi/messages/tool_result_message.rb +57 -0
  30. data/lib/roast/cogs/agent/providers/pi/pi_invocation.rb +352 -0
  31. data/lib/roast/cogs/agent/providers/pi.rb +41 -0
  32. data/lib/roast/cogs/agent/stats.rb +29 -0
  33. data/lib/roast/cogs/agent/usage.rb +22 -0
  34. data/lib/roast/cogs/agent.rb +5 -6
  35. data/lib/roast/cogs/chat/config.rb +28 -2
  36. data/lib/roast/cogs/chat.rb +82 -10
  37. data/lib/roast/event.rb +1 -0
  38. data/lib/roast/event_monitor.rb +35 -3
  39. data/lib/roast/log.rb +21 -0
  40. data/lib/roast/log_formatter.rb +9 -7
  41. data/lib/roast/version.rb +1 -1
  42. data/lib/roast.rb +1 -3
  43. data/roast-ai.gemspec +2 -1
  44. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +549 -383
  45. data/sorbet/rbi/gems/addressable@2.8.7.rbi +46 -44
  46. data/sorbet/rbi/gems/ast@2.4.3.rbi +7 -6
  47. data/sorbet/rbi/gems/async@2.34.0.rbi +21 -3
  48. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +7 -7
  49. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +198 -1
  50. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +405 -328
  51. data/sorbet/rbi/gems/console@1.34.2.rbi +2 -2
  52. data/sorbet/rbi/gems/docile@1.4.1.rbi +30 -30
  53. data/sorbet/rbi/gems/drb@2.2.3.rbi +25 -25
  54. data/sorbet/rbi/gems/erubi@1.13.1.rbi +2 -0
  55. data/sorbet/rbi/gems/faraday-net_http@3.4.2.rbi +2 -77
  56. data/sorbet/rbi/gems/faraday-retry@2.3.2.rbi +2 -57
  57. data/sorbet/rbi/gems/faraday@2.14.1.rbi +382 -75
  58. data/sorbet/rbi/gems/guard-compat@1.2.1.rbi +1 -110
  59. data/sorbet/rbi/gems/guard-minitest@2.4.6.rbi +0 -139
  60. data/sorbet/rbi/gems/guard@2.19.1.rbi +38 -38
  61. data/sorbet/rbi/gems/hashdiff@1.2.0.rbi +3 -3
  62. data/sorbet/rbi/gems/i18n@1.14.7.rbi +53 -29
  63. data/sorbet/rbi/gems/io-event@1.14.0.rbi +67 -10
  64. data/sorbet/rbi/gems/json@2.18.1.rbi +227 -5
  65. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +83 -0
  66. data/sorbet/rbi/gems/listen@3.9.0.rbi +7 -7
  67. data/sorbet/rbi/gems/logger@1.7.0.rbi +3 -3
  68. data/sorbet/rbi/gems/lumberjack@1.2.10.rbi +21 -21
  69. data/sorbet/rbi/gems/marcel@1.1.0.rbi +1 -1
  70. data/sorbet/rbi/gems/minitest-rg@5.3.0.rbi +0 -96
  71. data/sorbet/rbi/gems/minitest@5.25.5.rbi +1 -16
  72. data/sorbet/rbi/gems/net-http@0.9.1.rbi +27 -19
  73. data/sorbet/rbi/gems/netrc@0.11.0.rbi +18 -0
  74. data/sorbet/rbi/gems/notiffany@0.1.3.rbi +20 -20
  75. data/sorbet/rbi/gems/ostruct@0.6.2.rbi +149 -15
  76. data/sorbet/rbi/gems/parser@3.3.8.0.rbi +141 -139
  77. data/sorbet/rbi/gems/prism@1.4.0.rbi +922 -864
  78. data/sorbet/rbi/gems/public_suffix@6.0.2.rbi +56 -35
  79. data/sorbet/rbi/gems/racc@1.8.1.rbi +10 -2
  80. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +12 -12
  81. data/sorbet/rbi/gems/rake@13.3.0.rbi +219 -318
  82. data/sorbet/rbi/gems/{rbi@0.3.6.rbi → rbi@0.3.9.rbi} +612 -2267
  83. data/sorbet/rbi/gems/{rbs@3.9.4.rbi → rbs@4.0.0.dev.5.rbi} +2013 -680
  84. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +151 -113
  85. data/sorbet/rbi/gems/require-hooks@0.2.3.rbi +110 -0
  86. data/sorbet/rbi/gems/rexml@3.4.2.rbi +24 -51
  87. data/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +506 -815
  88. data/sorbet/rbi/gems/rubocop-sorbet@0.10.5.rbi +16 -16
  89. data/sorbet/rbi/gems/rubocop@1.77.0.rbi +2692 -2327
  90. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +8 -8
  91. data/sorbet/rbi/gems/ruby_llm@1.8.2.rbi +38 -23
  92. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +1 -1
  93. data/sorbet/rbi/gems/simplecov-html@0.13.2.rbi +2 -131
  94. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +28 -127
  95. data/sorbet/rbi/gems/{spoom@1.6.3.rbi → spoom@1.7.11.rbi} +1139 -2246
  96. data/sorbet/rbi/gems/sqlite3@2.9.0.rbi +91 -1
  97. data/sorbet/rbi/gems/{tapioca@0.16.11.rbi → tapioca@0.17.10.rbi} +721 -835
  98. data/sorbet/rbi/gems/thor@1.4.0.rbi +53 -53
  99. data/sorbet/rbi/gems/tsort@0.2.0.rbi +393 -0
  100. data/sorbet/rbi/gems/type_toolkit@0.0.5.rbi +49 -0
  101. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +144 -143
  102. data/sorbet/rbi/gems/uri@1.1.1.rbi +7 -7
  103. data/sorbet/rbi/gems/vcr@6.3.1.rbi +53 -36
  104. data/sorbet/rbi/gems/webmock@3.25.1.rbi +38 -13
  105. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +39 -272
  106. data/sorbet/rbi/shims/lib/roast/execution_context.rbi +3 -3
  107. data/tutorial/01_your_first_workflow/README.md +9 -5
  108. data/tutorial/01_your_first_workflow/configured_chat.rb +1 -1
  109. data/tutorial/02_chaining_cogs/README.md +2 -2
  110. data/tutorial/02_chaining_cogs/code_review.rb +1 -1
  111. data/tutorial/02_chaining_cogs/session_resumption.rb +1 -1
  112. data/tutorial/03_targets_and_params/README.md +1 -1
  113. data/tutorial/04_configuration_options/README.md +2 -2
  114. data/tutorial/08_iterative_workflows/README.md +1 -1
  115. data/tutorial/README.md +1 -1
  116. metadata +39 -17
  117. data/docs/AGENT_STEPS.md +0 -288
  118. data/docs/INSTRUMENTATION.md +0 -243
  119. data/docs/ITERATION_SYNTAX.md +0 -147
  120. data/docs/VALIDATION.md +0 -178
  121. data/lib/roast/nil_assertions.rb +0 -23
  122. /data/internal/documentation/{architectural-notes.md → comments/architectural-notes.md} +0 -0
  123. /data/internal/documentation/{doc-comments-external.md → comments/doc-comments-external.md} +0 -0
  124. /data/internal/documentation/{doc-comments-internal.md → comments/doc-comments-internal.md} +0 -0
  125. /data/internal/documentation/{doc-comments.md → comments/doc-comments.md} +0 -0
@@ -161,6 +161,24 @@ class OpenStruct
161
161
  # source://ostruct//lib/ostruct.rb#318
162
162
  def []=(name, value); end
163
163
 
164
+ # source://ostruct//lib/ostruct.rb#478
165
+ def __id__!; end
166
+
167
+ # source://ostruct//lib/ostruct.rb#478
168
+ def __send__!(*_arg0); end
169
+
170
+ # source://ostruct//lib/ostruct.rb#478
171
+ def abort!(*_args, **_kwargs, &_block); end
172
+
173
+ # source://ostruct//lib/ostruct.rb#478
174
+ def class!; end
175
+
176
+ # source://ostruct//lib/ostruct.rb#478
177
+ def clone!(freeze: T.unsafe(nil)); end
178
+
179
+ # source://ostruct//lib/ostruct.rb#478
180
+ def define_singleton_method!(*_arg0); end
181
+
164
182
  # Removes the named field from the object and returns the value the field
165
183
  # contained if it was defined. You may optionally provide a block.
166
184
  # If the field is not defined, the result of the block is returned,
@@ -185,7 +203,7 @@ class OpenStruct
185
203
  # source://ostruct//lib/ostruct.rb#371
186
204
  def delete_field(name, &block); end
187
205
 
188
- # source://ostruct//lib/ostruct.rb#371
206
+ # source://ostruct//lib/ostruct.rb#478
189
207
  def delete_field!(name, &block); end
190
208
 
191
209
  # :call-seq:
@@ -206,9 +224,15 @@ class OpenStruct
206
224
  # source://ostruct//lib/ostruct.rb#340
207
225
  def dig(name, *names); end
208
226
 
209
- # source://ostruct//lib/ostruct.rb#340
227
+ # source://ostruct//lib/ostruct.rb#478
210
228
  def dig!(name, *names); end
211
229
 
230
+ # source://ostruct//lib/ostruct.rb#478
231
+ def display!(*_arg0); end
232
+
233
+ # source://ostruct//lib/ostruct.rb#478
234
+ def dup!; end
235
+
212
236
  # :call-seq:
213
237
  # ostruct.each_pair {|name, value| block } -> ostruct
214
238
  # ostruct.each_pair -> Enumerator
@@ -223,7 +247,7 @@ class OpenStruct
223
247
  # source://ostruct//lib/ostruct.rb#211
224
248
  def each_pair; end
225
249
 
226
- # source://ostruct//lib/ostruct.rb#211
250
+ # source://ostruct//lib/ostruct.rb#478
227
251
  def each_pair!; end
228
252
 
229
253
  # Provides marshalling support for use by the YAML library.
@@ -231,9 +255,12 @@ class OpenStruct
231
255
  # source://ostruct//lib/ostruct.rb#446
232
256
  def encode_with(coder); end
233
257
 
234
- # source://ostruct//lib/ostruct.rb#446
258
+ # source://ostruct//lib/ostruct.rb#478
235
259
  def encode_with!(coder); end
236
260
 
261
+ # source://ostruct//lib/ostruct.rb#478
262
+ def enum_for!(*_arg0); end
263
+
237
264
  # Compares this object and +other+ for equality. An OpenStruct is eql? to
238
265
  # +other+ when +other+ is an OpenStruct and the two objects' Hash tables are
239
266
  # eql?.
@@ -243,18 +270,27 @@ class OpenStruct
243
270
  # source://ostruct//lib/ostruct.rb#433
244
271
  def eql?(other); end
245
272
 
273
+ # source://ostruct//lib/ostruct.rb#478
274
+ def exit!(*_args, **_kwargs, &_block); end
275
+
276
+ # source://ostruct//lib/ostruct.rb#478
277
+ def extend!(*_arg0); end
278
+
246
279
  # source://ostruct//lib/ostruct.rb#269
247
280
  def freeze; end
248
281
 
249
- # source://ostruct//lib/ostruct.rb#269
282
+ # source://ostruct//lib/ostruct.rb#478
250
283
  def freeze!; end
251
284
 
285
+ # source://ostruct//lib/ostruct.rb#478
286
+ def gem!(dep, *reqs); end
287
+
252
288
  # Computes a hash code for this OpenStruct.
253
289
  #
254
290
  # source://ostruct//lib/ostruct.rb#439
255
291
  def hash; end
256
292
 
257
- # source://ostruct//lib/ostruct.rb#439
293
+ # source://ostruct//lib/ostruct.rb#478
258
294
  def hash!; end
259
295
 
260
296
  # Provides marshalling support for use by the YAML library.
@@ -262,7 +298,7 @@ class OpenStruct
262
298
  # source://ostruct//lib/ostruct.rb#459
263
299
  def init_with(coder); end
264
300
 
265
- # source://ostruct//lib/ostruct.rb#459
301
+ # source://ostruct//lib/ostruct.rb#478
266
302
  def init_with!(coder); end
267
303
 
268
304
  # Returns a string containing a detailed summary of the keys and values.
@@ -270,41 +306,134 @@ class OpenStruct
270
306
  # source://ostruct//lib/ostruct.rb#388
271
307
  def inspect; end
272
308
 
273
- # source://ostruct//lib/ostruct.rb#388
309
+ # source://ostruct//lib/ostruct.rb#478
274
310
  def inspect!; end
275
311
 
312
+ # source://ostruct//lib/ostruct.rb#478
313
+ def instance_eval!(*_arg0); end
314
+
315
+ # source://ostruct//lib/ostruct.rb#478
316
+ def instance_exec!(*_arg0); end
317
+
318
+ # source://ostruct//lib/ostruct.rb#478
319
+ def instance_variable_get!(_arg0); end
320
+
321
+ # source://ostruct//lib/ostruct.rb#478
322
+ def instance_variable_set!(_arg0, _arg1); end
323
+
324
+ # source://ostruct//lib/ostruct.rb#478
325
+ def instance_variables!; end
326
+
327
+ # source://ostruct//lib/ostruct.rb#478
328
+ def itself!; end
329
+
276
330
  # Provides marshalling support for use by the Marshal library.
277
331
  #
278
332
  # source://ostruct//lib/ostruct.rb#220
279
333
  def marshal_dump; end
280
334
 
281
- # source://ostruct//lib/ostruct.rb#220
335
+ # source://ostruct//lib/ostruct.rb#478
282
336
  def marshal_dump!; end
283
337
 
338
+ # source://ostruct//lib/ostruct.rb#478
339
+ def method!(_arg0); end
340
+
341
+ # source://ostruct//lib/ostruct.rb#478
342
+ def methods!(*_arg0); end
343
+
344
+ # source://ostruct//lib/ostruct.rb#478
345
+ def object_id!; end
346
+
347
+ # source://ostruct//lib/ostruct.rb#478
348
+ def pretty_inspect!; end
349
+
350
+ # source://ostruct//lib/ostruct.rb#478
351
+ def pretty_print!(q); end
352
+
353
+ # source://ostruct//lib/ostruct.rb#478
354
+ def pretty_print_cycle!(q); end
355
+
356
+ # source://ostruct//lib/ostruct.rb#478
357
+ def pretty_print_inspect!; end
358
+
359
+ # source://ostruct//lib/ostruct.rb#478
360
+ def pretty_print_instance_variables!; end
361
+
362
+ # source://ostruct//lib/ostruct.rb#478
363
+ def private_methods!(*_arg0); end
364
+
365
+ # source://ostruct//lib/ostruct.rb#478
366
+ def protected_methods!(*_arg0); end
367
+
368
+ # source://ostruct//lib/ostruct.rb#478
369
+ def public_method!(_arg0); end
370
+
371
+ # source://ostruct//lib/ostruct.rb#478
372
+ def public_methods!(*_arg0); end
373
+
374
+ # source://ostruct//lib/ostruct.rb#478
375
+ def public_send!(*_arg0); end
376
+
377
+ # source://ostruct//lib/ostruct.rb#478
378
+ def remove_instance_variable!(_arg0); end
379
+
380
+ # source://ostruct//lib/ostruct.rb#478
381
+ def send!(*_arg0); end
382
+
383
+ # source://ostruct//lib/ostruct.rb#478
384
+ def singleton_class!; end
385
+
386
+ # source://ostruct//lib/ostruct.rb#478
387
+ def singleton_method!(_arg0); end
388
+
389
+ # source://ostruct//lib/ostruct.rb#478
390
+ def singleton_methods!(*_arg0); end
391
+
284
392
  # source://ostruct//lib/ostruct.rb#406
285
393
  def table; end
286
394
 
395
+ # source://ostruct//lib/ostruct.rb#478
396
+ def tap!; end
397
+
398
+ # source://ostruct//lib/ostruct.rb#478
399
+ def then!; end
400
+
401
+ # source://ostruct//lib/ostruct.rb#478
402
+ def to_enum!(*_arg0); end
403
+
287
404
  # source://ostruct//lib/ostruct.rb#182
288
405
  def to_h(&block); end
289
406
 
290
- # source://ostruct//lib/ostruct.rb#182
407
+ # source://ostruct//lib/ostruct.rb#478
291
408
  def to_h!(&block); end
292
409
 
410
+ # source://ostruct//lib/ostruct.rb#478
411
+ def to_json!(*_arg0); end
412
+
293
413
  # Returns a string containing a detailed summary of the keys and values.
294
414
  #
295
- # source://ostruct//lib/ostruct.rb#388
415
+ # source://ostruct//lib/ostruct.rb#404
296
416
  def to_s; end
297
417
 
298
- # source://ostruct//lib/ostruct.rb#388
418
+ # source://ostruct//lib/ostruct.rb#478
299
419
  def to_s!; end
300
420
 
421
+ # source://ostruct//lib/ostruct.rb#478
422
+ def to_yaml!(options = T.unsafe(nil)); end
423
+
424
+ # source://ostruct//lib/ostruct.rb#478
425
+ def yield_self!; end
426
+
301
427
  protected
302
428
 
303
- # source://ostruct//lib/ostruct.rb#406
429
+ # source://ostruct//lib/ostruct.rb#407
304
430
  def table!; end
305
431
 
306
432
  private
307
433
 
434
+ # source://ostruct//lib/ostruct.rb#486
435
+ def block_given!; end
436
+
308
437
  # source://ostruct//lib/ostruct.rb#147
309
438
  def initialize_clone(orig); end
310
439
 
@@ -317,7 +446,7 @@ class OpenStruct
317
446
  #
318
447
  # Provides marshalling support for use by the Marshal library.
319
448
  #
320
- # source://ostruct//lib/ostruct.rb#157
449
+ # source://ostruct//lib/ostruct.rb#227
321
450
  def marshal_load(hash); end
322
451
 
323
452
  # source://ostruct//lib/ostruct.rb#274
@@ -330,6 +459,11 @@ class OpenStruct
330
459
  # source://ostruct//lib/ostruct.rb#234
331
460
  def new_ostruct_member!(name); end
332
461
 
462
+ # Other builtin private methods we use:
463
+ #
464
+ # source://ostruct//lib/ostruct.rb#481
465
+ def raise!(*_arg0); end
466
+
333
467
  # :call-seq:
334
468
  # ostruct[name] = obj -> obj
335
469
  #
@@ -340,7 +474,7 @@ class OpenStruct
340
474
  # person[:age] = 42 # equivalent to person.age = 42
341
475
  # person.age # => 42
342
476
  #
343
- # source://ostruct//lib/ostruct.rb#318
477
+ # source://ostruct//lib/ostruct.rb#323
344
478
  def set_ostruct_member_value!(name, value); end
345
479
 
346
480
  # source://ostruct//lib/ostruct.rb#157