roast-ai 0.4.4 → 0.4.6

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +2 -0
  3. data/.github/workflows/ci.yaml +1 -0
  4. data/.gitignore +0 -26
  5. data/.rubocop.yml +13 -0
  6. data/.rubocop_todo.yml +21 -0
  7. data/CHANGELOG.md +37 -0
  8. data/Gemfile +4 -0
  9. data/Gemfile.lock +43 -1
  10. data/bin/rubocop +27 -0
  11. data/bin/spoom +27 -0
  12. data/bin/srb +27 -0
  13. data/bin/srb-rbi +27 -0
  14. data/bin/tapioca +27 -0
  15. data/docs/INSTRUMENTATION.md +3 -3
  16. data/dsl/simple.rb +10 -0
  17. data/examples/retry/workflow.yml +23 -0
  18. data/lib/roast/dsl/executor.rb +26 -0
  19. data/lib/roast/dsl.rb +7 -0
  20. data/lib/roast/errors.rb +1 -0
  21. data/lib/roast/factories/api_provider_factory.rb +1 -0
  22. data/lib/roast/helpers/function_caching_interceptor.rb +3 -0
  23. data/lib/roast/helpers/logger.rb +6 -9
  24. data/lib/roast/helpers/metadata_access.rb +1 -0
  25. data/lib/roast/helpers/minitest_coverage_runner.rb +1 -0
  26. data/lib/roast/helpers/path_resolver.rb +8 -18
  27. data/lib/roast/helpers/prompt_loader.rb +3 -2
  28. data/lib/roast/helpers/timeout_handler.rb +3 -5
  29. data/lib/roast/initializers.rb +1 -0
  30. data/lib/roast/resources/api_resource.rb +4 -3
  31. data/lib/roast/resources/base_resource.rb +1 -0
  32. data/lib/roast/resources/directory_resource.rb +1 -0
  33. data/lib/roast/resources/file_resource.rb +1 -0
  34. data/lib/roast/resources/none_resource.rb +1 -0
  35. data/lib/roast/resources/url_resource.rb +2 -1
  36. data/lib/roast/resources.rb +1 -2
  37. data/lib/roast/services/context_threshold_checker.rb +1 -0
  38. data/lib/roast/services/token_counting_service.rb +1 -0
  39. data/lib/roast/tools/apply_diff.rb +1 -0
  40. data/lib/roast/tools/ask_user.rb +1 -0
  41. data/lib/roast/tools/bash.rb +1 -0
  42. data/lib/roast/tools/cmd.rb +1 -0
  43. data/lib/roast/tools/coding_agent.rb +1 -0
  44. data/lib/roast/tools/context_summarizer.rb +1 -0
  45. data/lib/roast/tools/grep.rb +1 -0
  46. data/lib/roast/tools/helpers/coding_agent_message_formatter.rb +1 -0
  47. data/lib/roast/tools/read_file.rb +1 -0
  48. data/lib/roast/tools/search_file.rb +1 -0
  49. data/lib/roast/tools/swarm.rb +1 -0
  50. data/lib/roast/tools/update_files.rb +1 -0
  51. data/lib/roast/tools/write_file.rb +1 -0
  52. data/lib/roast/tools.rb +2 -0
  53. data/lib/roast/value_objects/api_token.rb +1 -0
  54. data/lib/roast/value_objects/step_name.rb +1 -0
  55. data/lib/roast/value_objects/uri_base.rb +1 -0
  56. data/lib/roast/value_objects/workflow_path.rb +1 -0
  57. data/lib/roast/value_objects.rb +1 -0
  58. data/lib/roast/version.rb +2 -1
  59. data/lib/roast/workflow/agent_step.rb +1 -0
  60. data/lib/roast/workflow/api_configuration.rb +1 -0
  61. data/lib/roast/workflow/base_iteration_step.rb +1 -0
  62. data/lib/roast/workflow/base_step.rb +1 -0
  63. data/lib/roast/workflow/base_workflow.rb +1 -0
  64. data/lib/roast/workflow/case_executor.rb +1 -0
  65. data/lib/roast/workflow/case_step.rb +1 -0
  66. data/lib/roast/workflow/command_executor.rb +1 -0
  67. data/lib/roast/workflow/conditional_executor.rb +1 -0
  68. data/lib/roast/workflow/conditional_step.rb +1 -0
  69. data/lib/roast/workflow/configuration.rb +9 -0
  70. data/lib/roast/workflow/configuration_loader.rb +4 -1
  71. data/lib/roast/workflow/context_manager.rb +1 -0
  72. data/lib/roast/workflow/context_path_resolver.rb +1 -0
  73. data/lib/roast/workflow/dot_access_hash.rb +1 -0
  74. data/lib/roast/workflow/each_step.rb +1 -0
  75. data/lib/roast/workflow/error_handler.rb +39 -3
  76. data/lib/roast/workflow/expression_evaluator.rb +1 -0
  77. data/lib/roast/workflow/expression_utils.rb +1 -0
  78. data/lib/roast/workflow/file_state_repository.rb +2 -1
  79. data/lib/roast/workflow/input_executor.rb +1 -0
  80. data/lib/roast/workflow/input_step.rb +1 -0
  81. data/lib/roast/workflow/interpolator.rb +2 -1
  82. data/lib/roast/workflow/iteration_executor.rb +1 -0
  83. data/lib/roast/workflow/llm_boolean_coercer.rb +1 -0
  84. data/lib/roast/workflow/metadata_manager.rb +1 -0
  85. data/lib/roast/workflow/output_handler.rb +1 -0
  86. data/lib/roast/workflow/output_manager.rb +1 -0
  87. data/lib/roast/workflow/parallel_executor.rb +1 -0
  88. data/lib/roast/workflow/prompt_step.rb +1 -0
  89. data/lib/roast/workflow/repeat_step.rb +1 -0
  90. data/lib/roast/workflow/replay_handler.rb +1 -0
  91. data/lib/roast/workflow/resource_resolver.rb +2 -6
  92. data/lib/roast/workflow/session_manager.rb +1 -0
  93. data/lib/roast/workflow/shell_script_step.rb +1 -0
  94. data/lib/roast/workflow/sqlite_state_repository.rb +1 -0
  95. data/lib/roast/workflow/state_manager.rb +1 -0
  96. data/lib/roast/workflow/state_repository.rb +1 -0
  97. data/lib/roast/workflow/state_repository_factory.rb +4 -2
  98. data/lib/roast/workflow/step_completion_reporter.rb +1 -0
  99. data/lib/roast/workflow/step_executor_coordinator.rb +17 -6
  100. data/lib/roast/workflow/step_executor_factory.rb +1 -0
  101. data/lib/roast/workflow/step_executor_registry.rb +2 -3
  102. data/lib/roast/workflow/step_executor_with_reporting.rb +1 -0
  103. data/lib/roast/workflow/step_executors/base_step_executor.rb +1 -0
  104. data/lib/roast/workflow/step_executors/hash_step_executor.rb +1 -0
  105. data/lib/roast/workflow/step_executors/parallel_step_executor.rb +1 -0
  106. data/lib/roast/workflow/step_executors/string_step_executor.rb +1 -0
  107. data/lib/roast/workflow/step_factory.rb +1 -0
  108. data/lib/roast/workflow/step_finder.rb +1 -0
  109. data/lib/roast/workflow/step_loader.rb +1 -0
  110. data/lib/roast/workflow/step_name_extractor.rb +1 -0
  111. data/lib/roast/workflow/step_runner.rb +1 -0
  112. data/lib/roast/workflow/step_type_resolver.rb +1 -0
  113. data/lib/roast/workflow/validation_command.rb +1 -0
  114. data/lib/roast/workflow/validator.rb +1 -0
  115. data/lib/roast/workflow/validators/base_validator.rb +1 -0
  116. data/lib/roast/workflow/validators/dependency_validator.rb +1 -0
  117. data/lib/roast/workflow/validators/linting_validator.rb +1 -0
  118. data/lib/roast/workflow/validators/schema_validator.rb +1 -0
  119. data/lib/roast/workflow/validators/step_collector.rb +1 -0
  120. data/lib/roast/workflow/validators/validation_orchestrator.rb +1 -0
  121. data/lib/roast/workflow/workflow_context.rb +1 -0
  122. data/lib/roast/workflow/workflow_execution_context.rb +1 -0
  123. data/lib/roast/workflow/workflow_executor.rb +2 -1
  124. data/lib/roast/workflow/workflow_initializer.rb +16 -1
  125. data/lib/roast/workflow/workflow_runner.rb +66 -55
  126. data/lib/roast/workflow.rb +1 -0
  127. data/lib/roast/workflow_diagram_generator.rb +3 -2
  128. data/lib/roast.rb +23 -8
  129. data/sorbet/config +8 -0
  130. data/sorbet/rbi/dsl/.gitattributes +1 -0
  131. data/sorbet/rbi/dsl/active_support/callbacks.rbi +21 -0
  132. data/sorbet/rbi/gems/.gitattributes +1 -0
  133. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +19107 -0
  134. data/sorbet/rbi/gems/addressable@2.8.7.rbi +1994 -0
  135. data/sorbet/rbi/gems/ast@2.4.3.rbi +585 -0
  136. data/sorbet/rbi/gems/base64@0.3.0.rbi +545 -0
  137. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
  138. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +62 -0
  139. data/sorbet/rbi/gems/cgi@0.5.0.rbi +2961 -0
  140. data/sorbet/rbi/gems/claude_swarm@0.1.19.rbi +568 -0
  141. data/sorbet/rbi/gems/cli-kit@5.0.1.rbi +1991 -0
  142. data/sorbet/rbi/gems/cli-ui@2.3.0.rbi +3181 -0
  143. data/sorbet/rbi/gems/coderay@1.1.3.rbi +9 -0
  144. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +11657 -0
  145. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  146. data/sorbet/rbi/gems/crack@1.0.0.rbi +145 -0
  147. data/sorbet/rbi/gems/diff-lcs@1.6.2.rbi +972 -0
  148. data/sorbet/rbi/gems/dotenv@3.1.8.rbi +295 -0
  149. data/sorbet/rbi/gems/drb@2.2.3.rbi +1661 -0
  150. data/sorbet/rbi/gems/dry-configurable@1.3.0.rbi +672 -0
  151. data/sorbet/rbi/gems/dry-core@1.1.0.rbi +1894 -0
  152. data/sorbet/rbi/gems/dry-inflector@1.2.0.rbi +659 -0
  153. data/sorbet/rbi/gems/dry-initializer@3.2.0.rbi +781 -0
  154. data/sorbet/rbi/gems/dry-logic@1.6.0.rbi +1127 -0
  155. data/sorbet/rbi/gems/dry-schema@1.14.1.rbi +3727 -0
  156. data/sorbet/rbi/gems/dry-types@1.8.3.rbi +3969 -0
  157. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  158. data/sorbet/rbi/gems/event_stream_parser@1.0.0.rbi +49 -0
  159. data/sorbet/rbi/gems/faraday-multipart@1.1.1.rbi +283 -0
  160. data/sorbet/rbi/gems/faraday-net_http@3.4.1.rbi +147 -0
  161. data/sorbet/rbi/gems/faraday-retry@2.3.2.rbi +9 -0
  162. data/sorbet/rbi/gems/faraday@2.13.1.rbi +2977 -0
  163. data/sorbet/rbi/gems/fast-mcp-annotations@1.5.3.rbi +1588 -0
  164. data/sorbet/rbi/gems/ffi@1.17.2.rbi +9 -0
  165. data/sorbet/rbi/gems/formatador@1.1.0.rbi +9 -0
  166. data/sorbet/rbi/gems/guard-compat@1.2.1.rbi +102 -0
  167. data/sorbet/rbi/gems/guard-minitest@2.4.6.rbi +402 -0
  168. data/sorbet/rbi/gems/guard@2.19.1.rbi +2283 -0
  169. data/sorbet/rbi/gems/hashdiff@1.2.0.rbi +355 -0
  170. data/sorbet/rbi/gems/i18n@1.14.7.rbi +2359 -0
  171. data/sorbet/rbi/gems/json-schema@5.1.1.rbi +1466 -0
  172. data/sorbet/rbi/gems/json@2.12.2.rbi +2051 -0
  173. data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +9 -0
  174. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +9 -0
  175. data/sorbet/rbi/gems/listen@3.9.0.rbi +1206 -0
  176. data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  177. data/sorbet/rbi/gems/lumberjack@1.2.10.rbi +1830 -0
  178. data/sorbet/rbi/gems/method_source@1.1.0.rbi +9 -0
  179. data/sorbet/rbi/gems/mime-types-data@3.2025.0617.rbi +136 -0
  180. data/sorbet/rbi/gems/mime-types@3.7.0.rbi +1342 -0
  181. data/sorbet/rbi/gems/minitest-rg@5.3.0.rbi +160 -0
  182. data/sorbet/rbi/gems/minitest@5.25.5.rbi +1640 -0
  183. data/sorbet/rbi/gems/mocha@2.7.1.rbi +12 -0
  184. data/sorbet/rbi/gems/multipart-post@2.4.1.rbi +244 -0
  185. data/sorbet/rbi/gems/nenv@0.3.0.rbi +147 -0
  186. data/sorbet/rbi/gems/net-http@0.6.0.rbi +4247 -0
  187. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  188. data/sorbet/rbi/gems/notiffany@0.1.3.rbi +1079 -0
  189. data/sorbet/rbi/gems/open_router@0.3.3.rbi +230 -0
  190. data/sorbet/rbi/gems/ostruct@0.6.2.rbi +354 -0
  191. data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
  192. data/sorbet/rbi/gems/parser@3.3.8.0.rbi +5535 -0
  193. data/sorbet/rbi/gems/prism@1.4.0.rbi +41732 -0
  194. data/sorbet/rbi/gems/pry@0.15.2.rbi +9 -0
  195. data/sorbet/rbi/gems/public_suffix@6.0.2.rbi +936 -0
  196. data/sorbet/rbi/gems/racc@1.8.1.rbi +158 -0
  197. data/sorbet/rbi/gems/rack@2.2.17.rbi +5659 -0
  198. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +9 -0
  199. data/sorbet/rbi/gems/raix@1.0.2.rbi +1104 -0
  200. data/sorbet/rbi/gems/rake@13.3.0.rbi +3036 -0
  201. data/sorbet/rbi/gems/rb-fsevent@0.11.2.rbi +9 -0
  202. data/sorbet/rbi/gems/rb-inotify@0.11.1.rbi +9 -0
  203. data/sorbet/rbi/gems/rbi@0.3.6.rbi +6893 -0
  204. data/sorbet/rbi/gems/rbs@3.9.4.rbi +6978 -0
  205. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +9 -0
  206. data/sorbet/rbi/gems/rexml@3.4.1.rbi +5346 -0
  207. data/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +9 -0
  208. data/sorbet/rbi/gems/rubocop-shopify@2.17.1.rbi +9 -0
  209. data/sorbet/rbi/gems/rubocop@1.77.0.rbi +9 -0
  210. data/sorbet/rbi/gems/ruby-graphviz@1.2.5.rbi +1333 -0
  211. data/sorbet/rbi/gems/ruby-openai@8.1.0.rbi +758 -0
  212. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +9 -0
  213. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +9 -0
  214. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  215. data/sorbet/rbi/gems/shellany@0.0.1.rbi +102 -0
  216. data/sorbet/rbi/gems/spoom@1.6.3.rbi +6985 -0
  217. data/sorbet/rbi/gems/sqlite3@2.7.0.rbi +1900 -0
  218. data/sorbet/rbi/gems/tapioca@0.16.11.rbi +3628 -0
  219. data/sorbet/rbi/gems/thor@1.4.0.rbi +4399 -0
  220. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
  221. data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +9 -0
  222. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +9 -0
  223. data/sorbet/rbi/gems/uri@1.0.3.rbi +2349 -0
  224. data/sorbet/rbi/gems/vcr@6.3.1.rbi +3040 -0
  225. data/sorbet/rbi/gems/webmock@3.25.1.rbi +1792 -0
  226. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  227. data/sorbet/rbi/gems/yard@0.9.37.rbi +18492 -0
  228. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +1429 -0
  229. data/sorbet/tapioca/config.yml +13 -0
  230. data/sorbet/tapioca/require.rb +36 -0
  231. metadata +114 -2
  232. data/lib/roast/workflow/configuration_parser.rb +0 -54
@@ -0,0 +1,12 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `mocha` gem.
5
+ # Please instead update this file by running `bin/tapioca gem mocha`.
6
+
7
+
8
+ # source://mocha//lib/mocha/version.rb#1
9
+ module Mocha; end
10
+
11
+ # source://mocha//lib/mocha/version.rb#2
12
+ Mocha::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,244 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `multipart-post` gem.
5
+ # Please instead update this file by running `bin/tapioca gem multipart-post`.
6
+
7
+
8
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#90
9
+ CompositeIO = Multipart::Post::CompositeReadIO
10
+
11
+ # source://multipart-post//lib/multipart/post/version.rb#7
12
+ module Multipart; end
13
+
14
+ # source://multipart-post//lib/multipart/post/version.rb#8
15
+ module Multipart::Post; end
16
+
17
+ # Concatenate together multiple IO objects into a single, composite IO object
18
+ # for purposes of reading as a single stream.
19
+ #
20
+ # @example
21
+ # crio = CompositeReadIO.new(StringIO.new('one'),
22
+ # StringIO.new('two'),
23
+ # StringIO.new('three'))
24
+ # puts crio.read # => "onetwothree"
25
+ #
26
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#28
27
+ class Multipart::Post::CompositeReadIO
28
+ # Create a new composite-read IO from the arguments, all of which should
29
+ # respond to #read in a manner consistent with IO.
30
+ #
31
+ # @return [CompositeReadIO] a new instance of CompositeReadIO
32
+ #
33
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#31
34
+ def initialize(*ios); end
35
+
36
+ # Close all the underyling IOs.
37
+ #
38
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#37
39
+ def close; end
40
+
41
+ # @return [Boolean]
42
+ #
43
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#46
44
+ def closed?; end
45
+
46
+ # Read from IOs in order until `length` bytes have been received.
47
+ #
48
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#51
49
+ def read(length = T.unsafe(nil), outbuf = T.unsafe(nil)); end
50
+
51
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#72
52
+ def rewind; end
53
+
54
+ private
55
+
56
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#83
57
+ def advance_io; end
58
+
59
+ # source://multipart-post//lib/multipart/post/composite_read_io.rb#79
60
+ def current_io; end
61
+ end
62
+
63
+ # source://multipart-post//lib/multipart/post/multipartable.rb#23
64
+ module Multipart::Post::Multipartable
65
+ # source://multipart-post//lib/multipart/post/multipartable.rb#38
66
+ def initialize(path, params, headers = T.unsafe(nil), boundary = T.unsafe(nil)); end
67
+
68
+ # Returns the value of attribute boundary.
69
+ #
70
+ # source://multipart-post//lib/multipart/post/multipartable.rb#61
71
+ def boundary; end
72
+
73
+ private
74
+
75
+ # source://multipart-post//lib/multipart/post/multipartable.rb#65
76
+ def symbolize_keys(hash); end
77
+
78
+ class << self
79
+ # source://multipart-post//lib/multipart/post/multipartable.rb#24
80
+ def secure_boundary; end
81
+ end
82
+ end
83
+
84
+ # source://multipart-post//lib/multipart/post/parts.rb#26
85
+ module Multipart::Post::Parts; end
86
+
87
+ # Represents the epilogue or closing boundary.
88
+ #
89
+ # source://multipart-post//lib/multipart/post/parts.rb#138
90
+ class Multipart::Post::Parts::EpiloguePart
91
+ include ::Multipart::Post::Parts::Part
92
+
93
+ # @return [EpiloguePart] a new instance of EpiloguePart
94
+ #
95
+ # source://multipart-post//lib/multipart/post/parts.rb#141
96
+ def initialize(boundary); end
97
+ end
98
+
99
+ # Represents a part to be filled from file IO.
100
+ #
101
+ # source://multipart-post//lib/multipart/post/parts.rb#83
102
+ class Multipart::Post::Parts::FilePart
103
+ include ::Multipart::Post::Parts::Part
104
+
105
+ # @param boundary [String]
106
+ # @param name [#to_s]
107
+ # @param io [IO]
108
+ # @param headers [Hash]
109
+ # @return [FilePart] a new instance of FilePart
110
+ #
111
+ # source://multipart-post//lib/multipart/post/parts.rb#92
112
+ def initialize(boundary, name, io, headers = T.unsafe(nil)); end
113
+
114
+ # @param boundary [String]
115
+ # @param name [#to_s]
116
+ # @param filename [String]
117
+ # @param type [String]
118
+ # @param content_len [Integer]
119
+ # @param opts [Hash]
120
+ #
121
+ # source://multipart-post//lib/multipart/post/parts.rb#107
122
+ def build_head(boundary, name, filename, type, content_len, opts = T.unsafe(nil)); end
123
+
124
+ # Returns the value of attribute length.
125
+ #
126
+ # source://multipart-post//lib/multipart/post/parts.rb#86
127
+ def length; end
128
+ end
129
+
130
+ # Represents a parametric part to be filled with given value.
131
+ #
132
+ # source://multipart-post//lib/multipart/post/parts.rb#51
133
+ class Multipart::Post::Parts::ParamPart
134
+ include ::Multipart::Post::Parts::Part
135
+
136
+ # @param boundary [String]
137
+ # @param name [#to_s]
138
+ # @param value [String]
139
+ # @param headers [Hash] Content-Type and Content-ID are used, if present.
140
+ # @return [ParamPart] a new instance of ParamPart
141
+ #
142
+ # source://multipart-post//lib/multipart/post/parts.rb#58
143
+ def initialize(boundary, name, value, headers = T.unsafe(nil)); end
144
+
145
+ # @param boundary [String]
146
+ # @param name [#to_s]
147
+ # @param value [String]
148
+ # @param headers [Hash] Content-Type is used, if present.
149
+ #
150
+ # source://multipart-post//lib/multipart/post/parts.rb#71
151
+ def build_part(boundary, name, value, headers = T.unsafe(nil)); end
152
+
153
+ # source://multipart-post//lib/multipart/post/parts.rb#63
154
+ def length; end
155
+ end
156
+
157
+ # source://multipart-post//lib/multipart/post/parts.rb#27
158
+ module Multipart::Post::Parts::Part
159
+ # source://multipart-post//lib/multipart/post/parts.rb#41
160
+ def length; end
161
+
162
+ # source://multipart-post//lib/multipart/post/parts.rb#45
163
+ def to_io; end
164
+
165
+ class << self
166
+ # @return [Boolean]
167
+ #
168
+ # source://multipart-post//lib/multipart/post/parts.rb#37
169
+ def file?(value); end
170
+
171
+ # source://multipart-post//lib/multipart/post/parts.rb#28
172
+ def new(boundary, name, value, headers = T.unsafe(nil)); end
173
+ end
174
+ end
175
+
176
+ # Convenience methods for dealing with files and IO that are to be uploaded.
177
+ #
178
+ # source://multipart-post//lib/multipart/post/upload_io.rb#9
179
+ class Multipart::Post::UploadIO
180
+ # Create an upload IO suitable for including in the params hash of a
181
+ # Net::HTTP::Post::Multipart.
182
+ #
183
+ # Can take two forms. The first accepts a filename and content type, and
184
+ # opens the file for reading (to be closed by finalizer).
185
+ #
186
+ # The second accepts an already-open IO, but also requires a third argument,
187
+ # the filename from which it was opened (particularly useful/recommended if
188
+ # uploading directly from a form in a framework, which often save the file to
189
+ # an arbitrarily named RackMultipart file in /tmp).
190
+ #
191
+ # @example
192
+ # UploadIO.new("file.txt", "text/plain")
193
+ # UploadIO.new(file_io, "text/plain", "file.txt")
194
+ # @return [UploadIO] a new instance of UploadIO
195
+ #
196
+ # source://multipart-post//lib/multipart/post/upload_io.rb#26
197
+ def initialize(filename_or_io, content_type, filename = T.unsafe(nil), opts = T.unsafe(nil)); end
198
+
199
+ # Returns the value of attribute content_type.
200
+ #
201
+ # source://multipart-post//lib/multipart/post/upload_io.rb#10
202
+ def content_type; end
203
+
204
+ # Returns the value of attribute io.
205
+ #
206
+ # source://multipart-post//lib/multipart/post/upload_io.rb#10
207
+ def io; end
208
+
209
+ # Returns the value of attribute local_path.
210
+ #
211
+ # source://multipart-post//lib/multipart/post/upload_io.rb#10
212
+ def local_path; end
213
+
214
+ # source://multipart-post//lib/multipart/post/upload_io.rb#52
215
+ def method_missing(*args); end
216
+
217
+ # Returns the value of attribute opts.
218
+ #
219
+ # source://multipart-post//lib/multipart/post/upload_io.rb#10
220
+ def opts; end
221
+
222
+ # Returns the value of attribute original_filename.
223
+ #
224
+ # source://multipart-post//lib/multipart/post/upload_io.rb#10
225
+ def original_filename; end
226
+
227
+ # @return [Boolean]
228
+ #
229
+ # source://multipart-post//lib/multipart/post/upload_io.rb#56
230
+ def respond_to?(meth, include_all = T.unsafe(nil)); end
231
+
232
+ class << self
233
+ # @raise [ArgumentError]
234
+ #
235
+ # source://multipart-post//lib/multipart/post/upload_io.rb#46
236
+ def convert!(io, content_type, original_filename, local_path); end
237
+ end
238
+ end
239
+
240
+ # source://multipart-post//lib/multipart/post/version.rb#9
241
+ Multipart::Post::VERSION = T.let(T.unsafe(nil), String)
242
+
243
+ # source://multipart-post//lib/multipart/post/upload_io.rb#63
244
+ UploadIO = Multipart::Post::UploadIO
@@ -0,0 +1,147 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `nenv` gem.
5
+ # Please instead update this file by running `bin/tapioca gem nenv`.
6
+
7
+
8
+ # source://nenv//lib/nenv/version.rb#1
9
+ module Nenv
10
+ class << self
11
+ # source://nenv//lib/nenv.rb#26
12
+ def instance; end
13
+
14
+ # source://nenv//lib/nenv.rb#18
15
+ def method_missing(meth, *args); end
16
+
17
+ # source://nenv//lib/nenv.rb#22
18
+ def reset; end
19
+
20
+ # @return [Boolean]
21
+ #
22
+ # source://nenv//lib/nenv.rb#14
23
+ def respond_to?(meth); end
24
+ end
25
+ end
26
+
27
+ # source://nenv//lib/nenv/autoenvironment.rb#3
28
+ class Nenv::AutoEnvironment < ::Nenv::Environment
29
+ # source://nenv//lib/nenv/autoenvironment.rb#4
30
+ def method_missing(meth, *args); end
31
+ end
32
+
33
+ # source://nenv//lib/nenv/builder.rb#4
34
+ module Nenv::Builder
35
+ class << self
36
+ # source://nenv//lib/nenv/builder.rb#5
37
+ def build(&block); end
38
+ end
39
+ end
40
+
41
+ # source://nenv//lib/nenv/environment/dumper.rb#2
42
+ class Nenv::Environment
43
+ # @return [Environment] a new instance of Environment
44
+ #
45
+ # source://nenv//lib/nenv/environment.rb#21
46
+ def initialize(namespace = T.unsafe(nil)); end
47
+
48
+ # source://nenv//lib/nenv/environment.rb#25
49
+ def create_method(meth, &block); end
50
+
51
+ private
52
+
53
+ # source://nenv//lib/nenv/environment.rb#35
54
+ def _namespaced_sanitize(meth); end
55
+
56
+ # source://nenv//lib/nenv/environment.rb#31
57
+ def _sanitize(meth); end
58
+
59
+ class << self
60
+ # source://nenv//lib/nenv/environment.rb#44
61
+ def _create_env_accessor(klass, meth, &block); end
62
+
63
+ # source://nenv//lib/nenv/environment.rb#40
64
+ def create_method(meth, &block); end
65
+
66
+ private
67
+
68
+ # source://nenv//lib/nenv/environment.rb#66
69
+ def _create_env_reader(klass, meth, &block); end
70
+
71
+ # source://nenv//lib/nenv/environment.rb#56
72
+ def _create_env_writer(klass, meth, &block); end
73
+
74
+ # source://nenv//lib/nenv/environment.rb#76
75
+ def _fail_if_accessor_exists(klass, meth); end
76
+ end
77
+ end
78
+
79
+ # source://nenv//lib/nenv/environment.rb#15
80
+ class Nenv::Environment::AlreadyExistsError < ::Nenv::Environment::MethodError
81
+ # source://nenv//lib/nenv/environment.rb#16
82
+ def message; end
83
+ end
84
+
85
+ # source://nenv//lib/nenv/environment/dumper.rb#3
86
+ module Nenv::Environment::Dumper
87
+ class << self
88
+ # source://nenv//lib/nenv/environment/dumper.rb#6
89
+ def setup(&callback); end
90
+ end
91
+ end
92
+
93
+ # source://nenv//lib/nenv/environment/dumper/default.rb#3
94
+ module Nenv::Environment::Dumper::Default
95
+ class << self
96
+ # source://nenv//lib/nenv/environment/dumper/default.rb#4
97
+ def call(raw_value); end
98
+ end
99
+ end
100
+
101
+ # source://nenv//lib/nenv/environment.rb#6
102
+ class Nenv::Environment::Error < ::ArgumentError; end
103
+
104
+ # source://nenv//lib/nenv/environment/loader.rb#3
105
+ module Nenv::Environment::Loader
106
+ class << self
107
+ # source://nenv//lib/nenv/environment/loader.rb#7
108
+ def setup(meth, &callback); end
109
+ end
110
+ end
111
+
112
+ # source://nenv//lib/nenv/environment/loader/default.rb#3
113
+ module Nenv::Environment::Loader::Default
114
+ class << self
115
+ # source://nenv//lib/nenv/environment/loader/default.rb#4
116
+ def call(raw_value); end
117
+ end
118
+ end
119
+
120
+ # source://nenv//lib/nenv/environment/loader/predicate.rb#3
121
+ module Nenv::Environment::Loader::Predicate
122
+ class << self
123
+ # source://nenv//lib/nenv/environment/loader/predicate.rb#4
124
+ def call(raw_value); end
125
+ end
126
+ end
127
+
128
+ # source://nenv//lib/nenv/environment.rb#9
129
+ class Nenv::Environment::MethodError < ::Nenv::Environment::Error
130
+ # @return [MethodError] a new instance of MethodError
131
+ #
132
+ # source://nenv//lib/nenv/environment.rb#10
133
+ def initialize(meth); end
134
+ end
135
+
136
+ # source://nenv//lib/nenv/version.rb#2
137
+ Nenv::VERSION = T.let(T.unsafe(nil), String)
138
+
139
+ class Object < ::BasicObject
140
+ include ::Kernel
141
+ include ::PP::ObjectMixin
142
+
143
+ private
144
+
145
+ # source://nenv//lib/nenv.rb#6
146
+ def Nenv(namespace = T.unsafe(nil)); end
147
+ end