context.dev 2.16.0 → 2.17.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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +1 -1
  4. data/lib/context_dev/models/ai_extract_product_params.rb +53 -8
  5. data/lib/context_dev/models/ai_extract_product_response.rb +10 -1
  6. data/lib/context_dev/models/ai_extract_products_params.rb +116 -16
  7. data/lib/context_dev/models/ai_extract_products_response.rb +11 -1
  8. data/lib/context_dev/models/brand_retrieve_params.rb +355 -60
  9. data/lib/context_dev/models/brand_retrieve_response.rb +71 -62
  10. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +57 -11
  11. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +72 -63
  12. data/lib/context_dev/models/industry_retrieve_naics_params.rb +53 -8
  13. data/lib/context_dev/models/industry_retrieve_naics_response.rb +10 -1
  14. data/lib/context_dev/models/industry_retrieve_sic_params.rb +53 -8
  15. data/lib/context_dev/models/industry_retrieve_sic_response.rb +10 -1
  16. data/lib/context_dev/models/monitor_create_params.rb +27 -3
  17. data/lib/context_dev/models/monitor_create_response.rb +30 -5
  18. data/lib/context_dev/models/monitor_list_response.rb +30 -5
  19. data/lib/context_dev/models/monitor_retrieve_response.rb +30 -5
  20. data/lib/context_dev/models/monitor_update_params.rb +27 -3
  21. data/lib/context_dev/models/monitor_update_response.rb +30 -5
  22. data/lib/context_dev/models/person_enrich_params.rb +53 -8
  23. data/lib/context_dev/models/person_enrich_response.rb +10 -1
  24. data/lib/context_dev/models/utility_prefetch_params.rb +48 -8
  25. data/lib/context_dev/models/web_answers_params.rb +124 -0
  26. data/lib/context_dev/models/web_answers_response.rb +68 -0
  27. data/lib/context_dev/models/web_extract_competitors_params.rb +53 -8
  28. data/lib/context_dev/models/web_extract_competitors_response.rb +10 -1
  29. data/lib/context_dev/models/web_extract_fonts_params.rb +58 -11
  30. data/lib/context_dev/models/web_extract_fonts_response.rb +32 -1
  31. data/lib/context_dev/models/web_extract_params.rb +53 -8
  32. data/lib/context_dev/models/web_extract_response.rb +10 -1
  33. data/lib/context_dev/models/web_extract_styleguide_params.rb +58 -11
  34. data/lib/context_dev/models/web_extract_styleguide_response.rb +32 -1
  35. data/lib/context_dev/models/web_screenshot_params.rb +58 -10
  36. data/lib/context_dev/models/web_screenshot_response.rb +32 -1
  37. data/lib/context_dev/models/web_search_params.rb +112 -16
  38. data/lib/context_dev/models/web_search_response.rb +49 -4
  39. data/lib/context_dev/models/web_web_crawl_md_params.rb +53 -8
  40. data/lib/context_dev/models/web_web_crawl_md_response.rb +11 -1
  41. data/lib/context_dev/models/web_web_scrape_bytes_params.rb +344 -0
  42. data/lib/context_dev/models/web_web_scrape_bytes_response.rb +135 -0
  43. data/lib/context_dev/models/web_web_scrape_html_params.rb +57 -10
  44. data/lib/context_dev/models/web_web_scrape_html_response.rb +32 -1
  45. data/lib/context_dev/models/web_web_scrape_images_params.rb +57 -10
  46. data/lib/context_dev/models/web_web_scrape_images_response.rb +42 -1
  47. data/lib/context_dev/models/web_web_scrape_md_params.rb +57 -10
  48. data/lib/context_dev/models/web_web_scrape_md_response.rb +32 -1
  49. data/lib/context_dev/models/web_web_scrape_sitemap_params.rb +53 -8
  50. data/lib/context_dev/models/web_web_scrape_sitemap_response.rb +11 -1
  51. data/lib/context_dev/models.rb +4 -0
  52. data/lib/context_dev/resources/ai.rb +2 -2
  53. data/lib/context_dev/resources/brand.rb +3 -3
  54. data/lib/context_dev/resources/industry.rb +6 -6
  55. data/lib/context_dev/resources/people.rb +2 -2
  56. data/lib/context_dev/resources/utility.rb +2 -2
  57. data/lib/context_dev/resources/web.rb +119 -33
  58. data/lib/context_dev/version.rb +1 -1
  59. data/lib/context_dev.rb +4 -0
  60. data/rbi/context_dev/models/ai_extract_product_params.rbi +125 -13
  61. data/rbi/context_dev/models/ai_extract_product_response.rbi +13 -0
  62. data/rbi/context_dev/models/ai_extract_products_params.rbi +264 -26
  63. data/rbi/context_dev/models/ai_extract_products_response.rbi +15 -0
  64. data/rbi/context_dev/models/brand_retrieve_params.rbi +816 -102
  65. data/rbi/context_dev/models/brand_retrieve_response.rbi +136 -131
  66. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +136 -19
  67. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +140 -135
  68. data/rbi/context_dev/models/industry_retrieve_naics_params.rbi +127 -13
  69. data/rbi/context_dev/models/industry_retrieve_naics_response.rbi +13 -0
  70. data/rbi/context_dev/models/industry_retrieve_sic_params.rbi +127 -13
  71. data/rbi/context_dev/models/industry_retrieve_sic_response.rbi +13 -0
  72. data/rbi/context_dev/models/monitor_create_params.rbi +40 -2
  73. data/rbi/context_dev/models/monitor_create_response.rbi +44 -4
  74. data/rbi/context_dev/models/monitor_list_response.rbi +44 -4
  75. data/rbi/context_dev/models/monitor_retrieve_response.rbi +44 -4
  76. data/rbi/context_dev/models/monitor_update_params.rbi +40 -2
  77. data/rbi/context_dev/models/monitor_update_response.rbi +44 -4
  78. data/rbi/context_dev/models/person_enrich_params.rbi +123 -13
  79. data/rbi/context_dev/models/person_enrich_response.rbi +16 -3
  80. data/rbi/context_dev/models/utility_prefetch_params.rbi +112 -13
  81. data/rbi/context_dev/models/web_answers_params.rbi +234 -0
  82. data/rbi/context_dev/models/web_answers_response.rbi +122 -0
  83. data/rbi/context_dev/models/web_extract_competitors_params.rbi +127 -13
  84. data/rbi/context_dev/models/web_extract_competitors_response.rbi +16 -3
  85. data/rbi/context_dev/models/web_extract_fonts_params.rbi +132 -19
  86. data/rbi/context_dev/models/web_extract_fonts_response.rbi +71 -0
  87. data/rbi/context_dev/models/web_extract_params.rbi +120 -13
  88. data/rbi/context_dev/models/web_extract_response.rbi +16 -3
  89. data/rbi/context_dev/models/web_extract_styleguide_params.rbi +136 -19
  90. data/rbi/context_dev/models/web_extract_styleguide_response.rbi +71 -0
  91. data/rbi/context_dev/models/web_screenshot_params.rbi +132 -17
  92. data/rbi/context_dev/models/web_screenshot_response.rbi +71 -0
  93. data/rbi/context_dev/models/web_search_params.rbi +253 -26
  94. data/rbi/context_dev/models/web_search_response.rbi +96 -8
  95. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +123 -13
  96. data/rbi/context_dev/models/web_web_crawl_md_response.rbi +19 -3
  97. data/rbi/context_dev/models/web_web_scrape_bytes_params.rbi +699 -0
  98. data/rbi/context_dev/models/web_web_scrape_bytes_response.rbi +238 -0
  99. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +132 -17
  100. data/rbi/context_dev/models/web_web_scrape_html_response.rbi +61 -0
  101. data/rbi/context_dev/models/web_web_scrape_images_params.rbi +134 -17
  102. data/rbi/context_dev/models/web_web_scrape_images_response.rbi +89 -3
  103. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +130 -17
  104. data/rbi/context_dev/models/web_web_scrape_md_response.rbi +61 -0
  105. data/rbi/context_dev/models/web_web_scrape_sitemap_params.rbi +127 -13
  106. data/rbi/context_dev/models/web_web_scrape_sitemap_response.rbi +18 -3
  107. data/rbi/context_dev/models.rbi +4 -0
  108. data/rbi/context_dev/resources/ai.rbi +5 -5
  109. data/rbi/context_dev/resources/brand.rbi +9 -8
  110. data/rbi/context_dev/resources/industry.rbi +12 -10
  111. data/rbi/context_dev/resources/people.rbi +5 -5
  112. data/rbi/context_dev/resources/utility.rbi +5 -5
  113. data/rbi/context_dev/resources/web.rbi +170 -72
  114. data/sig/context_dev/models/ai_extract_product_params.rbs +44 -5
  115. data/sig/context_dev/models/ai_extract_product_response.rbs +7 -0
  116. data/sig/context_dev/models/ai_extract_products_params.rbs +88 -10
  117. data/sig/context_dev/models/ai_extract_products_response.rbs +7 -0
  118. data/sig/context_dev/models/brand_retrieve_params.rbs +264 -30
  119. data/sig/context_dev/models/brand_retrieve_response.rbs +53 -54
  120. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +44 -5
  121. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +53 -54
  122. data/sig/context_dev/models/industry_retrieve_naics_params.rbs +44 -5
  123. data/sig/context_dev/models/industry_retrieve_naics_response.rbs +7 -0
  124. data/sig/context_dev/models/industry_retrieve_sic_params.rbs +44 -5
  125. data/sig/context_dev/models/industry_retrieve_sic_response.rbs +7 -0
  126. data/sig/context_dev/models/monitor_create_params.rbs +14 -0
  127. data/sig/context_dev/models/monitor_create_response.rbs +14 -0
  128. data/sig/context_dev/models/monitor_list_response.rbs +14 -0
  129. data/sig/context_dev/models/monitor_retrieve_response.rbs +14 -0
  130. data/sig/context_dev/models/monitor_update_params.rbs +14 -0
  131. data/sig/context_dev/models/monitor_update_response.rbs +14 -0
  132. data/sig/context_dev/models/person_enrich_params.rbs +44 -5
  133. data/sig/context_dev/models/person_enrich_response.rbs +10 -3
  134. data/sig/context_dev/models/utility_prefetch_params.rbs +43 -5
  135. data/sig/context_dev/models/web_answers_params.rbs +106 -0
  136. data/sig/context_dev/models/web_answers_response.rbs +60 -0
  137. data/sig/context_dev/models/web_extract_competitors_params.rbs +44 -5
  138. data/sig/context_dev/models/web_extract_competitors_response.rbs +10 -3
  139. data/sig/context_dev/models/web_extract_fonts_params.rbs +44 -5
  140. data/sig/context_dev/models/web_extract_fonts_response.rbs +20 -0
  141. data/sig/context_dev/models/web_extract_params.rbs +44 -5
  142. data/sig/context_dev/models/web_extract_response.rbs +10 -3
  143. data/sig/context_dev/models/web_extract_styleguide_params.rbs +44 -5
  144. data/sig/context_dev/models/web_extract_styleguide_response.rbs +20 -0
  145. data/sig/context_dev/models/web_screenshot_params.rbs +44 -5
  146. data/sig/context_dev/models/web_screenshot_response.rbs +20 -0
  147. data/sig/context_dev/models/web_search_params.rbs +88 -10
  148. data/sig/context_dev/models/web_search_response.rbs +33 -6
  149. data/sig/context_dev/models/web_web_crawl_md_params.rbs +44 -5
  150. data/sig/context_dev/models/web_web_crawl_md_response.rbs +10 -3
  151. data/sig/context_dev/models/web_web_scrape_bytes_params.rbs +531 -0
  152. data/sig/context_dev/models/web_web_scrape_bytes_response.rbs +108 -0
  153. data/sig/context_dev/models/web_web_scrape_html_params.rbs +44 -5
  154. data/sig/context_dev/models/web_web_scrape_html_response.rbs +16 -0
  155. data/sig/context_dev/models/web_web_scrape_images_params.rbs +44 -5
  156. data/sig/context_dev/models/web_web_scrape_images_response.rbs +30 -3
  157. data/sig/context_dev/models/web_web_scrape_md_params.rbs +44 -5
  158. data/sig/context_dev/models/web_web_scrape_md_response.rbs +16 -0
  159. data/sig/context_dev/models/web_web_scrape_sitemap_params.rbs +44 -5
  160. data/sig/context_dev/models/web_web_scrape_sitemap_response.rbs +10 -3
  161. data/sig/context_dev/models.rbs +4 -0
  162. data/sig/context_dev/resources/ai.rbs +1 -1
  163. data/sig/context_dev/resources/brand.rbs +1 -1
  164. data/sig/context_dev/resources/industry.rbs +2 -2
  165. data/sig/context_dev/resources/people.rbs +1 -1
  166. data/sig/context_dev/resources/utility.rbs +1 -1
  167. data/sig/context_dev/resources/web.rbs +30 -11
  168. metadata +14 -2
@@ -0,0 +1,234 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class WebAnswersParams < ContextDev::Internal::Type::BaseModel
6
+ extend ContextDev::Internal::Type::RequestParameters::Converter
7
+ include ContextDev::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(ContextDev::WebAnswersParams, ContextDev::Internal::AnyHash)
12
+ end
13
+
14
+ # What to research and answer, in plain language. Naming a domain in the task (for
15
+ # example "pricing on context.dev") makes the agent read that site before it
16
+ # searches.
17
+ sig { returns(String) }
18
+ attr_accessor :task
19
+
20
+ # An example object with placeholder values (for example {"pricing_page_url": "",
21
+ # "plans": [{"name": "", "price": 0}]}). Object keys and value types are
22
+ # preserved; unknown values may be null. Empty arrays accept any JSON items.
23
+ # Defaults to {"result": ""}. Maximum 8 levels, 500 values, and 16000 characters.
24
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
25
+ attr_reader :json_format
26
+
27
+ sig { params(json_format: T::Hash[Symbol, T.anything]).void }
28
+ attr_writer :json_format
29
+
30
+ # Research level: fast uses a smaller model and research budget for 10 credits;
31
+ # ultra uses deeper reasoning and research for 100 credits. Defaults to ultra.
32
+ # Only successful requests consume credits.
33
+ sig { returns(T.nilable(ContextDev::WebAnswersParams::Mode::OrSymbol)) }
34
+ attr_reader :mode
35
+
36
+ sig { params(mode: ContextDev::WebAnswersParams::Mode::OrSymbol).void }
37
+ attr_writer :mode
38
+
39
+ # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
40
+ sig { returns(T.nilable(T::Array[String])) }
41
+ attr_reader :tags
42
+
43
+ sig { params(tags: T::Array[String]).void }
44
+ attr_writer :tags
45
+
46
+ # Optional request deadline and behavior on timeout. For GET requests, use
47
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
48
+ # timeoutOpts object.
49
+ sig { returns(T.nilable(ContextDev::WebAnswersParams::TimeoutOpts)) }
50
+ attr_reader :timeout_opts
51
+
52
+ sig do
53
+ params(
54
+ timeout_opts: ContextDev::WebAnswersParams::TimeoutOpts::OrHash
55
+ ).void
56
+ end
57
+ attr_writer :timeout_opts
58
+
59
+ sig do
60
+ params(
61
+ task: String,
62
+ json_format: T::Hash[Symbol, T.anything],
63
+ mode: ContextDev::WebAnswersParams::Mode::OrSymbol,
64
+ tags: T::Array[String],
65
+ timeout_opts: ContextDev::WebAnswersParams::TimeoutOpts::OrHash,
66
+ request_options: ContextDev::RequestOptions::OrHash
67
+ ).returns(T.attached_class)
68
+ end
69
+ def self.new(
70
+ # What to research and answer, in plain language. Naming a domain in the task (for
71
+ # example "pricing on context.dev") makes the agent read that site before it
72
+ # searches.
73
+ task:,
74
+ # An example object with placeholder values (for example {"pricing_page_url": "",
75
+ # "plans": [{"name": "", "price": 0}]}). Object keys and value types are
76
+ # preserved; unknown values may be null. Empty arrays accept any JSON items.
77
+ # Defaults to {"result": ""}. Maximum 8 levels, 500 values, and 16000 characters.
78
+ json_format: nil,
79
+ # Research level: fast uses a smaller model and research budget for 10 credits;
80
+ # ultra uses deeper reasoning and research for 100 credits. Defaults to ultra.
81
+ # Only successful requests consume credits.
82
+ mode: nil,
83
+ # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
84
+ tags: nil,
85
+ # Optional request deadline and behavior on timeout. For GET requests, use
86
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
87
+ # timeoutOpts object.
88
+ timeout_opts: nil,
89
+ request_options: {}
90
+ )
91
+ end
92
+
93
+ sig do
94
+ override.returns(
95
+ {
96
+ task: String,
97
+ json_format: T::Hash[Symbol, T.anything],
98
+ mode: ContextDev::WebAnswersParams::Mode::OrSymbol,
99
+ tags: T::Array[String],
100
+ timeout_opts: ContextDev::WebAnswersParams::TimeoutOpts,
101
+ request_options: ContextDev::RequestOptions
102
+ }
103
+ )
104
+ end
105
+ def to_hash
106
+ end
107
+
108
+ # Research level: fast uses a smaller model and research budget for 10 credits;
109
+ # ultra uses deeper reasoning and research for 100 credits. Defaults to ultra.
110
+ # Only successful requests consume credits.
111
+ module Mode
112
+ extend ContextDev::Internal::Type::Enum
113
+
114
+ TaggedSymbol =
115
+ T.type_alias { T.all(Symbol, ContextDev::WebAnswersParams::Mode) }
116
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
117
+
118
+ FAST = T.let(:fast, ContextDev::WebAnswersParams::Mode::TaggedSymbol)
119
+ ULTRA = T.let(:ultra, ContextDev::WebAnswersParams::Mode::TaggedSymbol)
120
+
121
+ sig do
122
+ override.returns(
123
+ T::Array[ContextDev::WebAnswersParams::Mode::TaggedSymbol]
124
+ )
125
+ end
126
+ def self.values
127
+ end
128
+ end
129
+
130
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
131
+ OrHash =
132
+ T.type_alias do
133
+ T.any(
134
+ ContextDev::WebAnswersParams::TimeoutOpts,
135
+ ContextDev::Internal::AnyHash
136
+ )
137
+ end
138
+
139
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
140
+ sig { returns(Integer) }
141
+ attr_accessor :milliseconds
142
+
143
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
144
+ # credits. "return-partial" returns usable results collected so far; if none are
145
+ # available, the request still fails without charging credits. Partial results are
146
+ # not cached as complete results.
147
+ sig do
148
+ returns(
149
+ T.nilable(
150
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::OrSymbol
151
+ )
152
+ )
153
+ end
154
+ attr_reader :behavior
155
+
156
+ sig do
157
+ params(
158
+ behavior:
159
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::OrSymbol
160
+ ).void
161
+ end
162
+ attr_writer :behavior
163
+
164
+ # Optional request deadline and behavior on timeout. For GET requests, use
165
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
166
+ # timeoutOpts object.
167
+ sig do
168
+ params(
169
+ milliseconds: Integer,
170
+ behavior:
171
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::OrSymbol
172
+ ).returns(T.attached_class)
173
+ end
174
+ def self.new(
175
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
176
+ milliseconds:,
177
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
178
+ # credits. "return-partial" returns usable results collected so far; if none are
179
+ # available, the request still fails without charging credits. Partial results are
180
+ # not cached as complete results.
181
+ behavior: nil
182
+ )
183
+ end
184
+
185
+ sig do
186
+ override.returns(
187
+ {
188
+ milliseconds: Integer,
189
+ behavior:
190
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::OrSymbol
191
+ }
192
+ )
193
+ end
194
+ def to_hash
195
+ end
196
+
197
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
198
+ # credits. "return-partial" returns usable results collected so far; if none are
199
+ # available, the request still fails without charging credits. Partial results are
200
+ # not cached as complete results.
201
+ module Behavior
202
+ extend ContextDev::Internal::Type::Enum
203
+
204
+ TaggedSymbol =
205
+ T.type_alias do
206
+ T.all(Symbol, ContextDev::WebAnswersParams::TimeoutOpts::Behavior)
207
+ end
208
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
209
+
210
+ FAIL =
211
+ T.let(
212
+ :fail,
213
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::TaggedSymbol
214
+ )
215
+ RETURN_PARTIAL =
216
+ T.let(
217
+ :"return-partial",
218
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::TaggedSymbol
219
+ )
220
+
221
+ sig do
222
+ override.returns(
223
+ T::Array[
224
+ ContextDev::WebAnswersParams::TimeoutOpts::Behavior::TaggedSymbol
225
+ ]
226
+ )
227
+ end
228
+ def self.values
229
+ end
230
+ end
231
+ end
232
+ end
233
+ end
234
+ end
@@ -0,0 +1,122 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class WebAnswersResponse < ContextDev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ ContextDev::Models::WebAnswersResponse,
10
+ ContextDev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The answer, in the shape requested by json_format.
15
+ sig { returns(T::Hash[Symbol, T.anything]) }
16
+ attr_accessor :json_content
17
+
18
+ # URLs that supplied search results or readable page content, in first-seen order.
19
+ # Unreadable pages are excluded.
20
+ sig { returns(T::Array[String]) }
21
+ attr_accessor :sources
22
+
23
+ # Credit usage, included whenever a valid API key is provided.
24
+ sig do
25
+ returns(T.nilable(ContextDev::Models::WebAnswersResponse::KeyMetadata))
26
+ end
27
+ attr_reader :key_metadata
28
+
29
+ sig do
30
+ params(
31
+ key_metadata:
32
+ ContextDev::Models::WebAnswersResponse::KeyMetadata::OrHash
33
+ ).void
34
+ end
35
+ attr_writer :key_metadata
36
+
37
+ # True when the request deadline ended research and the answer uses the evidence
38
+ # collected so far.
39
+ sig { returns(T.nilable(T::Boolean)) }
40
+ attr_reader :partial
41
+
42
+ sig { params(partial: T::Boolean).void }
43
+ attr_writer :partial
44
+
45
+ sig do
46
+ params(
47
+ json_content: T::Hash[Symbol, T.anything],
48
+ sources: T::Array[String],
49
+ key_metadata:
50
+ ContextDev::Models::WebAnswersResponse::KeyMetadata::OrHash,
51
+ partial: T::Boolean
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ # The answer, in the shape requested by json_format.
56
+ json_content:,
57
+ # URLs that supplied search results or readable page content, in first-seen order.
58
+ # Unreadable pages are excluded.
59
+ sources:,
60
+ # Credit usage, included whenever a valid API key is provided.
61
+ key_metadata: nil,
62
+ # True when the request deadline ended research and the answer uses the evidence
63
+ # collected so far.
64
+ partial: nil
65
+ )
66
+ end
67
+
68
+ sig do
69
+ override.returns(
70
+ {
71
+ json_content: T::Hash[Symbol, T.anything],
72
+ sources: T::Array[String],
73
+ key_metadata: ContextDev::Models::WebAnswersResponse::KeyMetadata,
74
+ partial: T::Boolean
75
+ }
76
+ )
77
+ end
78
+ def to_hash
79
+ end
80
+
81
+ class KeyMetadata < ContextDev::Internal::Type::BaseModel
82
+ OrHash =
83
+ T.type_alias do
84
+ T.any(
85
+ ContextDev::Models::WebAnswersResponse::KeyMetadata,
86
+ ContextDev::Internal::AnyHash
87
+ )
88
+ end
89
+
90
+ # Credits used by this request.
91
+ sig { returns(Integer) }
92
+ attr_accessor :credits_consumed
93
+
94
+ # Credits remaining for your organization.
95
+ sig { returns(Integer) }
96
+ attr_accessor :credits_remaining
97
+
98
+ # Credit usage, included whenever a valid API key is provided.
99
+ sig do
100
+ params(credits_consumed: Integer, credits_remaining: Integer).returns(
101
+ T.attached_class
102
+ )
103
+ end
104
+ def self.new(
105
+ # Credits used by this request.
106
+ credits_consumed:,
107
+ # Credits remaining for your organization.
108
+ credits_remaining:
109
+ )
110
+ end
111
+
112
+ sig do
113
+ override.returns(
114
+ { credits_consumed: Integer, credits_remaining: Integer }
115
+ )
116
+ end
117
+ def to_hash
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -34,21 +34,29 @@ module ContextDev
34
34
  sig { params(tags: T::Array[String]).void }
35
35
  attr_writer :tags
36
36
 
37
- # Optional timeout in milliseconds for the request. If the request takes longer
38
- # than this value, it will be aborted with a 408 status code. Maximum allowed
39
- # value is 300000ms (5 minutes).
40
- sig { returns(T.nilable(Integer)) }
41
- attr_reader :timeout_ms
37
+ # Optional request deadline and behavior on timeout. For GET requests, use
38
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
39
+ # timeoutOpts object.
40
+ sig do
41
+ returns(T.nilable(ContextDev::WebExtractCompetitorsParams::TimeoutOpts))
42
+ end
43
+ attr_reader :timeout_opts
42
44
 
43
- sig { params(timeout_ms: Integer).void }
44
- attr_writer :timeout_ms
45
+ sig do
46
+ params(
47
+ timeout_opts:
48
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::OrHash
49
+ ).void
50
+ end
51
+ attr_writer :timeout_opts
45
52
 
46
53
  sig do
47
54
  params(
48
55
  domain: String,
49
56
  num_competitors: Integer,
50
57
  tags: T::Array[String],
51
- timeout_ms: Integer,
58
+ timeout_opts:
59
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::OrHash,
52
60
  request_options: ContextDev::RequestOptions::OrHash
53
61
  ).returns(T.attached_class)
54
62
  end
@@ -61,10 +69,10 @@ module ContextDev
61
69
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
62
70
  # characters.
63
71
  tags: nil,
64
- # Optional timeout in milliseconds for the request. If the request takes longer
65
- # than this value, it will be aborted with a 408 status code. Maximum allowed
66
- # value is 300000ms (5 minutes).
67
- timeout_ms: nil,
72
+ # Optional request deadline and behavior on timeout. For GET requests, use
73
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
74
+ # timeoutOpts object.
75
+ timeout_opts: nil,
68
76
  request_options: {}
69
77
  )
70
78
  end
@@ -75,13 +83,119 @@ module ContextDev
75
83
  domain: String,
76
84
  num_competitors: Integer,
77
85
  tags: T::Array[String],
78
- timeout_ms: Integer,
86
+ timeout_opts: ContextDev::WebExtractCompetitorsParams::TimeoutOpts,
79
87
  request_options: ContextDev::RequestOptions
80
88
  }
81
89
  )
82
90
  end
83
91
  def to_hash
84
92
  end
93
+
94
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
95
+ OrHash =
96
+ T.type_alias do
97
+ T.any(
98
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts,
99
+ ContextDev::Internal::AnyHash
100
+ )
101
+ end
102
+
103
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
104
+ sig { returns(Integer) }
105
+ attr_accessor :milliseconds
106
+
107
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
108
+ # credits. "return-partial" returns usable results collected so far; if none are
109
+ # available, the request still fails without charging credits. Partial results are
110
+ # not cached as complete results.
111
+ sig do
112
+ returns(
113
+ T.nilable(
114
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
115
+ )
116
+ )
117
+ end
118
+ attr_reader :behavior
119
+
120
+ sig do
121
+ params(
122
+ behavior:
123
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
124
+ ).void
125
+ end
126
+ attr_writer :behavior
127
+
128
+ # Optional request deadline and behavior on timeout. For GET requests, use
129
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
130
+ # timeoutOpts object.
131
+ sig do
132
+ params(
133
+ milliseconds: Integer,
134
+ behavior:
135
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
136
+ ).returns(T.attached_class)
137
+ end
138
+ def self.new(
139
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
140
+ milliseconds:,
141
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
142
+ # credits. "return-partial" returns usable results collected so far; if none are
143
+ # available, the request still fails without charging credits. Partial results are
144
+ # not cached as complete results.
145
+ behavior: nil
146
+ )
147
+ end
148
+
149
+ sig do
150
+ override.returns(
151
+ {
152
+ milliseconds: Integer,
153
+ behavior:
154
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
155
+ }
156
+ )
157
+ end
158
+ def to_hash
159
+ end
160
+
161
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
162
+ # credits. "return-partial" returns usable results collected so far; if none are
163
+ # available, the request still fails without charging credits. Partial results are
164
+ # not cached as complete results.
165
+ module Behavior
166
+ extend ContextDev::Internal::Type::Enum
167
+
168
+ TaggedSymbol =
169
+ T.type_alias do
170
+ T.all(
171
+ Symbol,
172
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior
173
+ )
174
+ end
175
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
176
+
177
+ FAIL =
178
+ T.let(
179
+ :fail,
180
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::TaggedSymbol
181
+ )
182
+ RETURN_PARTIAL =
183
+ T.let(
184
+ :"return-partial",
185
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::TaggedSymbol
186
+ )
187
+
188
+ sig do
189
+ override.returns(
190
+ T::Array[
191
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::TaggedSymbol
192
+ ]
193
+ )
194
+ end
195
+ def self.values
196
+ end
197
+ end
198
+ end
85
199
  end
86
200
  end
87
201
  end
@@ -68,6 +68,14 @@ module ContextDev
68
68
  end
69
69
  attr_writer :key_metadata
70
70
 
71
+ # True when the timeout ended processing and this response contains only usable
72
+ # results completed so far. Unfinished results are omitted.
73
+ sig { returns(T.nilable(T::Boolean)) }
74
+ attr_reader :partial
75
+
76
+ sig { params(partial: T::Boolean).void }
77
+ attr_writer :partial
78
+
71
79
  sig do
72
80
  params(
73
81
  competitors:
@@ -81,7 +89,8 @@ module ContextDev
81
89
  target:
82
90
  ContextDev::Models::WebExtractCompetitorsResponse::Target::OrHash,
83
91
  key_metadata:
84
- ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata::OrHash
92
+ ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata::OrHash,
93
+ partial: T::Boolean
85
94
  ).returns(T.attached_class)
86
95
  end
87
96
  def self.new(
@@ -97,7 +106,10 @@ module ContextDev
97
106
  # Target company profile inferred from the landing page.
98
107
  target:,
99
108
  # Credit usage, included whenever a valid API key is provided.
100
- key_metadata: nil
109
+ key_metadata: nil,
110
+ # True when the timeout ended processing and this response contains only usable
111
+ # results completed so far. Unfinished results are omitted.
112
+ partial: nil
101
113
  )
102
114
  end
103
115
 
@@ -114,7 +126,8 @@ module ContextDev
114
126
  ContextDev::Models::WebExtractCompetitorsResponse::Status::TaggedSymbol,
115
127
  target: ContextDev::Models::WebExtractCompetitorsResponse::Target,
116
128
  key_metadata:
117
- ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata
129
+ ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata,
130
+ partial: T::Boolean
118
131
  }
119
132
  )
120
133
  end