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
@@ -13,9 +13,16 @@ end
13
13
  # source://sqlite3//lib/sqlite3/constants.rb#1
14
14
  module SQLite3
15
15
  class << self
16
+ # source://sqlite3//lib/sqlite3.rb#4
16
17
  def libversion; end
18
+
19
+ # source://sqlite3//lib/sqlite3.rb#4
17
20
  def sqlcipher?; end
21
+
22
+ # source://sqlite3//lib/sqlite3.rb#4
18
23
  def status(*_arg0); end
24
+
25
+ # source://sqlite3//lib/sqlite3.rb#4
19
26
  def threadsafe; end
20
27
 
21
28
  # Was sqlite3 compiled with thread safety on?
@@ -34,11 +41,19 @@ class SQLite3::AbortException < ::SQLite3::Exception; end
34
41
  class SQLite3::AuthorizationException < ::SQLite3::Exception; end
35
42
 
36
43
  class SQLite3::Backup
44
+ # source://sqlite3//lib/sqlite3.rb#4
37
45
  def initialize(_arg0, _arg1, _arg2, _arg3); end
38
46
 
47
+ # source://sqlite3//lib/sqlite3.rb#4
39
48
  def finish; end
49
+
50
+ # source://sqlite3//lib/sqlite3.rb#4
40
51
  def pagecount; end
52
+
53
+ # source://sqlite3//lib/sqlite3.rb#4
41
54
  def remaining; end
55
+
56
+ # source://sqlite3//lib/sqlite3.rb#4
42
57
  def step(_arg0); end
43
58
  end
44
59
 
@@ -538,6 +553,7 @@ class SQLite3::Database
538
553
  # source://sqlite3//lib/sqlite3/database.rb#207
539
554
  def authorizer(&block); end
540
555
 
556
+ # source://sqlite3//lib/sqlite3.rb#4
541
557
  def authorizer=(_arg0); end
542
558
 
543
559
  # Given a statement, return a result set.
@@ -546,6 +562,7 @@ class SQLite3::Database
546
562
  # source://sqlite3//lib/sqlite3/database.rb#790
547
563
  def build_result_set(stmt); end
548
564
 
565
+ # source://sqlite3//lib/sqlite3.rb#4
549
566
  def busy_handler(*_arg0); end
550
567
 
551
568
  # Sets a #busy_handler that releases the GVL between retries,
@@ -556,11 +573,22 @@ class SQLite3::Database
556
573
  # source://sqlite3//lib/sqlite3/database.rb#693
557
574
  def busy_handler_timeout=(milliseconds); end
558
575
 
576
+ # source://sqlite3//lib/sqlite3/database.rb#387
559
577
  def busy_timeout(_arg0); end
578
+
579
+ # source://sqlite3//lib/sqlite3.rb#4
560
580
  def busy_timeout=(_arg0); end
581
+
582
+ # source://sqlite3//lib/sqlite3.rb#4
561
583
  def changes; end
584
+
585
+ # source://sqlite3//lib/sqlite3.rb#4
562
586
  def close; end
587
+
588
+ # source://sqlite3//lib/sqlite3.rb#4
563
589
  def closed?; end
590
+
591
+ # source://sqlite3//lib/sqlite3.rb#4
564
592
  def collation(_arg0, _arg1); end
565
593
 
566
594
  # Returns the value of attribute collations.
@@ -576,6 +604,7 @@ class SQLite3::Database
576
604
  # source://sqlite3//lib/sqlite3/database.rb#669
577
605
  def commit; end
578
606
 
607
+ # source://sqlite3//lib/sqlite3.rb#4
579
608
  def complete?(_arg0); end
580
609
 
581
610
  # Creates a new aggregate function for use in SQL statements. Aggregate
@@ -710,8 +739,13 @@ class SQLite3::Database
710
739
  # source://sqlite3//lib/sqlite3/database.rb#592
711
740
  def define_aggregator(name, aggregator); end
712
741
 
742
+ # source://sqlite3//lib/sqlite3.rb#4
713
743
  def define_function(_arg0); end
744
+
745
+ # source://sqlite3//lib/sqlite3.rb#4
714
746
  def define_function_with_flags(_arg0, _arg1); end
747
+
748
+ # source://sqlite3//lib/sqlite3.rb#4
715
749
  def enable_load_extension(_arg0); end
716
750
 
717
751
  # call-seq: db.encoding
@@ -721,7 +755,10 @@ class SQLite3::Database
721
755
  # source://sqlite3//lib/sqlite3/database.rb#199
722
756
  def encoding; end
723
757
 
758
+ # source://sqlite3//lib/sqlite3.rb#4
724
759
  def errcode; end
760
+
761
+ # source://sqlite3//lib/sqlite3.rb#4
725
762
  def errmsg; end
726
763
 
727
764
  # Executes the given SQL statement. If additional parameters are given,
@@ -787,6 +824,7 @@ class SQLite3::Database
787
824
  # source://sqlite3//lib/sqlite3/database.rb#330
788
825
  def execute_batch2(sql, &block); end
789
826
 
827
+ # source://sqlite3//lib/sqlite3.rb#4
790
828
  def extended_result_codes=(_arg0); end
791
829
 
792
830
  # Returns the filename for the database named +db_name+. +db_name+ defaults
@@ -818,7 +856,10 @@ class SQLite3::Database
818
856
  # source://sqlite3//lib/sqlite3/database.rb#738
819
857
  def initialize_extensions(extensions); end
820
858
 
859
+ # source://sqlite3//lib/sqlite3.rb#4
821
860
  def interrupt; end
861
+
862
+ # source://sqlite3//lib/sqlite3.rb#4
822
863
  def last_insert_row_id; end
823
864
 
824
865
  # call-seq:
@@ -896,8 +937,13 @@ class SQLite3::Database
896
937
  # source://sqlite3//lib/sqlite3/database.rb#678
897
938
  def rollback; end
898
939
 
940
+ # source://sqlite3//lib/sqlite3.rb#4
899
941
  def statement_timeout=(_arg0); end
942
+
943
+ # source://sqlite3//lib/sqlite3.rb#4
900
944
  def total_changes; end
945
+
946
+ # source://sqlite3//lib/sqlite3.rb#4
901
947
  def trace(*_arg0); end
902
948
 
903
949
  # Begins a new transaction. Note that nested transactions are not allowed
@@ -922,17 +968,33 @@ class SQLite3::Database
922
968
  # source://sqlite3//lib/sqlite3/database.rb#646
923
969
  def transaction(mode = T.unsafe(nil)); end
924
970
 
971
+ # source://sqlite3//lib/sqlite3.rb#4
925
972
  def transaction_active?; end
926
973
 
927
974
  private
928
975
 
976
+ # source://sqlite3//lib/sqlite3.rb#4
929
977
  def db_filename(_arg0); end
978
+
979
+ # source://sqlite3//lib/sqlite3.rb#4
930
980
  def define_aggregator2(_arg0, _arg1); end
981
+
982
+ # source://sqlite3//lib/sqlite3.rb#4
931
983
  def disable_quirk_mode; end
984
+
985
+ # source://sqlite3//lib/sqlite3.rb#4
932
986
  def discard; end
987
+
988
+ # source://sqlite3//lib/sqlite3.rb#4
933
989
  def exec_batch(_arg0, _arg1); end
990
+
991
+ # source://sqlite3//lib/sqlite3.rb#4
934
992
  def load_extension_internal(_arg0); end
993
+
994
+ # source://sqlite3//lib/sqlite3.rb#4
935
995
  def open16(_arg0); end
996
+
997
+ # source://sqlite3//lib/sqlite3.rb#4
936
998
  def open_v2(_arg0, _arg1, _arg2); end
937
999
 
938
1000
  class << self
@@ -1063,7 +1125,7 @@ class SQLite3::FullException < ::SQLite3::Exception; end
1063
1125
 
1064
1126
  # source://sqlite3//lib/sqlite3/resultset.rb#93
1065
1127
  class SQLite3::HashResultSet < ::SQLite3::ResultSet
1066
- # source://sqlite3//lib/sqlite3/resultset.rb#85
1128
+ # source://sqlite3//lib/sqlite3/resultset.rb#94
1067
1129
  def next; end
1068
1130
  end
1069
1131
 
@@ -1694,7 +1756,10 @@ class SQLite3::Statement
1694
1756
  # source://sqlite3//lib/sqlite3/statement.rb#111
1695
1757
  def active?; end
1696
1758
 
1759
+ # source://sqlite3//lib/sqlite3.rb#4
1697
1760
  def bind_param(_arg0, _arg1); end
1761
+
1762
+ # source://sqlite3//lib/sqlite3.rb#4
1698
1763
  def bind_parameter_count; end
1699
1764
 
1700
1765
  # Binds the given variables to the corresponding placeholders in the SQL
@@ -1714,11 +1779,22 @@ class SQLite3::Statement
1714
1779
  # source://sqlite3//lib/sqlite3/statement.rb#52
1715
1780
  def bind_params(*bind_vars); end
1716
1781
 
1782
+ # source://sqlite3//lib/sqlite3.rb#4
1717
1783
  def clear_bindings!; end
1784
+
1785
+ # source://sqlite3//lib/sqlite3.rb#4
1718
1786
  def close; end
1787
+
1788
+ # source://sqlite3//lib/sqlite3.rb#4
1719
1789
  def closed?; end
1790
+
1791
+ # source://sqlite3//lib/sqlite3.rb#4
1720
1792
  def column_count; end
1793
+
1794
+ # source://sqlite3//lib/sqlite3.rb#4
1721
1795
  def column_decltype(_arg0); end
1796
+
1797
+ # source://sqlite3//lib/sqlite3.rb#4
1722
1798
  def column_name(_arg0); end
1723
1799
 
1724
1800
  # Return an array of the column names for this statement. Note that this
@@ -1728,6 +1804,7 @@ class SQLite3::Statement
1728
1804
  # source://sqlite3//lib/sqlite3/statement.rb#118
1729
1805
  def columns; end
1730
1806
 
1807
+ # source://sqlite3//lib/sqlite3.rb#4
1731
1808
  def done?; end
1732
1809
 
1733
1810
  # source://sqlite3//lib/sqlite3/statement.rb#123
@@ -1771,7 +1848,10 @@ class SQLite3::Statement
1771
1848
  # source://sqlite3//lib/sqlite3/statement.rb#104
1772
1849
  def execute!(*bind_vars, &block); end
1773
1850
 
1851
+ # source://sqlite3//lib/sqlite3.rb#4
1774
1852
  def expanded_sql; end
1853
+
1854
+ # source://sqlite3//lib/sqlite3.rb#4
1775
1855
  def memused; end
1776
1856
 
1777
1857
  # Performs a sanity check to ensure that the statement is not
@@ -1780,6 +1860,7 @@ class SQLite3::Statement
1780
1860
  # source://sqlite3//lib/sqlite3/statement.rb#142
1781
1861
  def must_be_open!; end
1782
1862
 
1863
+ # source://sqlite3//lib/sqlite3.rb#4
1783
1864
  def named_params; end
1784
1865
 
1785
1866
  # This is any text that followed the first valid SQL statement in the text
@@ -1789,7 +1870,10 @@ class SQLite3::Statement
1789
1870
  # source://sqlite3//lib/sqlite3/statement.rb#20
1790
1871
  def remainder; end
1791
1872
 
1873
+ # source://sqlite3//lib/sqlite3.rb#4
1792
1874
  def reset!; end
1875
+
1876
+ # source://sqlite3//lib/sqlite3.rb#4
1793
1877
  def sql; end
1794
1878
 
1795
1879
  # Returns a Hash containing information about the statement.
@@ -1815,6 +1899,7 @@ class SQLite3::Statement
1815
1899
  # source://sqlite3//lib/sqlite3/statement.rb#167
1816
1900
  def stat(key = T.unsafe(nil)); end
1817
1901
 
1902
+ # source://sqlite3//lib/sqlite3.rb#4
1818
1903
  def step; end
1819
1904
 
1820
1905
  # Return an array of the data types for each column in this statement. Note
@@ -1833,8 +1918,13 @@ class SQLite3::Statement
1833
1918
  # source://sqlite3//lib/sqlite3/statement.rb#180
1834
1919
  def get_metadata; end
1835
1920
 
1921
+ # source://sqlite3//lib/sqlite3.rb#4
1836
1922
  def prepare(_arg0, _arg1); end
1923
+
1924
+ # source://sqlite3//lib/sqlite3.rb#4
1837
1925
  def stat_for(_arg0); end
1926
+
1927
+ # source://sqlite3//lib/sqlite3.rb#4
1838
1928
  def stats_as_hash; end
1839
1929
  end
1840
1930