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
@@ -42,14 +42,21 @@ module ContextDev
42
42
  sig { params(tags: T::Array[String]).void }
43
43
  attr_writer :tags
44
44
 
45
- # Optional timeout in milliseconds for the request. If the request takes longer
46
- # than this value, it will be aborted with a 408 status code. Maximum allowed
47
- # value is 300000ms (5 minutes).
48
- sig { returns(T.nilable(Integer)) }
49
- attr_reader :timeout_ms
45
+ # Optional request deadline and behavior on timeout. For GET requests, use
46
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
47
+ # timeoutOpts object.
48
+ sig do
49
+ returns(T.nilable(ContextDev::IndustryRetrieveSicParams::TimeoutOpts))
50
+ end
51
+ attr_reader :timeout_opts
50
52
 
51
- sig { params(timeout_ms: Integer).void }
52
- attr_writer :timeout_ms
53
+ sig do
54
+ params(
55
+ timeout_opts:
56
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::OrHash
57
+ ).void
58
+ end
59
+ attr_writer :timeout_opts
53
60
 
54
61
  # Which SIC dataset to classify against. `original_sic` uses the 1987 Standard
55
62
  # Industrial Classification system; `latest_sec` uses the current SIC list as
@@ -72,7 +79,8 @@ module ContextDev
72
79
  max_results: Integer,
73
80
  min_results: Integer,
74
81
  tags: T::Array[String],
75
- timeout_ms: Integer,
82
+ timeout_opts:
83
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::OrHash,
76
84
  type: ContextDev::IndustryRetrieveSicParams::Type::OrSymbol,
77
85
  request_options: ContextDev::RequestOptions::OrHash
78
86
  ).returns(T.attached_class)
@@ -89,10 +97,10 @@ module ContextDev
89
97
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
90
98
  # characters.
91
99
  tags: nil,
92
- # Optional timeout in milliseconds for the request. If the request takes longer
93
- # than this value, it will be aborted with a 408 status code. Maximum allowed
94
- # value is 300000ms (5 minutes).
95
- timeout_ms: nil,
100
+ # Optional request deadline and behavior on timeout. For GET requests, use
101
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
102
+ # timeoutOpts object.
103
+ timeout_opts: nil,
96
104
  # Which SIC dataset to classify against. `original_sic` uses the 1987 Standard
97
105
  # Industrial Classification system; `latest_sec` uses the current SIC list as
98
106
  # published by the SEC. Defaults to `original_sic`.
@@ -108,7 +116,7 @@ module ContextDev
108
116
  max_results: Integer,
109
117
  min_results: Integer,
110
118
  tags: T::Array[String],
111
- timeout_ms: Integer,
119
+ timeout_opts: ContextDev::IndustryRetrieveSicParams::TimeoutOpts,
112
120
  type: ContextDev::IndustryRetrieveSicParams::Type::OrSymbol,
113
121
  request_options: ContextDev::RequestOptions
114
122
  }
@@ -117,6 +125,112 @@ module ContextDev
117
125
  def to_hash
118
126
  end
119
127
 
128
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
129
+ OrHash =
130
+ T.type_alias do
131
+ T.any(
132
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts,
133
+ ContextDev::Internal::AnyHash
134
+ )
135
+ end
136
+
137
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
138
+ sig { returns(Integer) }
139
+ attr_accessor :milliseconds
140
+
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
+ sig do
146
+ returns(
147
+ T.nilable(
148
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::OrSymbol
149
+ )
150
+ )
151
+ end
152
+ attr_reader :behavior
153
+
154
+ sig do
155
+ params(
156
+ behavior:
157
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::OrSymbol
158
+ ).void
159
+ end
160
+ attr_writer :behavior
161
+
162
+ # Optional request deadline and behavior on timeout. For GET requests, use
163
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
164
+ # timeoutOpts object.
165
+ sig do
166
+ params(
167
+ milliseconds: Integer,
168
+ behavior:
169
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::OrSymbol
170
+ ).returns(T.attached_class)
171
+ end
172
+ def self.new(
173
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
174
+ milliseconds:,
175
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
176
+ # credits. "return-partial" returns usable results collected so far; if none are
177
+ # available, the request still fails without charging credits. Partial results are
178
+ # not cached as complete results.
179
+ behavior: nil
180
+ )
181
+ end
182
+
183
+ sig do
184
+ override.returns(
185
+ {
186
+ milliseconds: Integer,
187
+ behavior:
188
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::OrSymbol
189
+ }
190
+ )
191
+ end
192
+ def to_hash
193
+ end
194
+
195
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
196
+ # credits. "return-partial" returns usable results collected so far; if none are
197
+ # available, the request still fails without charging credits. Partial results are
198
+ # not cached as complete results.
199
+ module Behavior
200
+ extend ContextDev::Internal::Type::Enum
201
+
202
+ TaggedSymbol =
203
+ T.type_alias do
204
+ T.all(
205
+ Symbol,
206
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior
207
+ )
208
+ end
209
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
210
+
211
+ FAIL =
212
+ T.let(
213
+ :fail,
214
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::TaggedSymbol
215
+ )
216
+ RETURN_PARTIAL =
217
+ T.let(
218
+ :"return-partial",
219
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::TaggedSymbol
220
+ )
221
+
222
+ sig do
223
+ override.returns(
224
+ T::Array[
225
+ ContextDev::IndustryRetrieveSicParams::TimeoutOpts::Behavior::TaggedSymbol
226
+ ]
227
+ )
228
+ end
229
+ def self.values
230
+ end
231
+ end
232
+ end
233
+
120
234
  # Which SIC dataset to classify against. `original_sic` uses the 1987 Standard
121
235
  # Industrial Classification system; `latest_sec` uses the current SIC list as
122
236
  # published by the SEC. Defaults to `original_sic`.
@@ -81,6 +81,14 @@ module ContextDev
81
81
  end
82
82
  attr_writer :key_metadata
83
83
 
84
+ # True when the timeout ended processing and this response contains only usable
85
+ # results completed so far. Unfinished results are omitted.
86
+ sig { returns(T.nilable(T::Boolean)) }
87
+ attr_reader :partial
88
+
89
+ sig { params(partial: T::Boolean).void }
90
+ attr_writer :partial
91
+
84
92
  # Status of the response, e.g., 'ok'
85
93
  sig { returns(T.nilable(String)) }
86
94
  attr_reader :status
@@ -107,6 +115,7 @@ module ContextDev
107
115
  domain: String,
108
116
  key_metadata:
109
117
  ContextDev::Models::IndustryRetrieveSicResponse::KeyMetadata::OrHash,
118
+ partial: T::Boolean,
110
119
  status: String,
111
120
  type: String
112
121
  ).returns(T.attached_class)
@@ -125,6 +134,9 @@ module ContextDev
125
134
  domain: nil,
126
135
  # Credit usage, included whenever a valid API key is provided.
127
136
  key_metadata: nil,
137
+ # True when the timeout ended processing and this response contains only usable
138
+ # results completed so far. Unfinished results are omitted.
139
+ partial: nil,
128
140
  # Status of the response, e.g., 'ok'
129
141
  status: nil,
130
142
  # Industry classification type, for sic api it will be `sic`
@@ -143,6 +155,7 @@ module ContextDev
143
155
  domain: String,
144
156
  key_metadata:
145
157
  ContextDev::Models::IndustryRetrieveSicResponse::KeyMetadata,
158
+ partial: T::Boolean,
146
159
  status: String,
147
160
  type: String
148
161
  }
@@ -185,6 +185,27 @@ module ContextDev
185
185
  sig { returns(String) }
186
186
  attr_accessor :url
187
187
 
188
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
189
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
190
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
191
+ # creates a new baseline.
192
+ sig { returns(T.nilable(T::Array[String])) }
193
+ attr_reader :exclude_selectors
194
+
195
+ sig { params(exclude_selectors: T::Array[String]).void }
196
+ attr_writer :exclude_selectors
197
+
198
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
199
+ # combined in document order before text extraction, instead of automatic
200
+ # main-content selection. Omit or pass an empty array to use automatic
201
+ # main-content extraction. If the filtered page has no usable text, the run fails
202
+ # without replacing the baseline. Changing these selectors creates a new baseline.
203
+ sig { returns(T.nilable(T::Array[String])) }
204
+ attr_reader :include_selectors
205
+
206
+ sig { params(include_selectors: T::Array[String]).void }
207
+ attr_writer :include_selectors
208
+
188
209
  # Plain-language goal describing which page changes matter. When provided without
189
210
  # change_detection, semantic detection is inferred.
190
211
  sig { returns(T.nilable(String)) }
@@ -205,6 +226,8 @@ module ContextDev
205
226
  sig do
206
227
  params(
207
228
  url: String,
229
+ exclude_selectors: T::Array[String],
230
+ include_selectors: T::Array[String],
208
231
  instructions: String,
209
232
  normalize_whitespace: T::Boolean,
210
233
  type: Symbol
@@ -212,6 +235,17 @@ module ContextDev
212
235
  end
213
236
  def self.new(
214
237
  url:,
238
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
239
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
240
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
241
+ # creates a new baseline.
242
+ exclude_selectors: nil,
243
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
244
+ # combined in document order before text extraction, instead of automatic
245
+ # main-content selection. Omit or pass an empty array to use automatic
246
+ # main-content extraction. If the filtered page has no usable text, the run fails
247
+ # without replacing the baseline. Changing these selectors creates a new baseline.
248
+ include_selectors: nil,
215
249
  # Plain-language goal describing which page changes matter. When provided without
216
250
  # change_detection, semantic detection is inferred.
217
251
  instructions: nil,
@@ -226,6 +260,8 @@ module ContextDev
226
260
  {
227
261
  type: Symbol,
228
262
  url: String,
263
+ exclude_selectors: T::Array[String],
264
+ include_selectors: T::Array[String],
229
265
  instructions: String,
230
266
  normalize_whitespace: T::Boolean
231
267
  }
@@ -665,7 +701,8 @@ module ContextDev
665
701
  )
666
702
  end
667
703
 
668
- # Webhook URL events are delivered to.
704
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
705
+ # automatically formatted as Slack messages.
669
706
  sig { returns(String) }
670
707
  attr_accessor :url
671
708
 
@@ -712,7 +749,8 @@ module ContextDev
712
749
  ).returns(T.attached_class)
713
750
  end
714
751
  def self.new(
715
- # Webhook URL events are delivered to.
752
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
753
+ # automatically formatted as Slack messages.
716
754
  url:,
717
755
  # Events delivered to this endpoint. `change.detected` fires only when a run
718
756
  # detects a change; `run.completed` fires on every completed run — including runs
@@ -603,6 +603,27 @@ module ContextDev
603
603
  sig { returns(String) }
604
604
  attr_accessor :url
605
605
 
606
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
607
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
608
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
609
+ # creates a new baseline.
610
+ sig { returns(T.nilable(T::Array[String])) }
611
+ attr_reader :exclude_selectors
612
+
613
+ sig { params(exclude_selectors: T::Array[String]).void }
614
+ attr_writer :exclude_selectors
615
+
616
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
617
+ # combined in document order before text extraction, instead of automatic
618
+ # main-content selection. Omit or pass an empty array to use automatic
619
+ # main-content extraction. If the filtered page has no usable text, the run fails
620
+ # without replacing the baseline. Changing these selectors creates a new baseline.
621
+ sig { returns(T.nilable(T::Array[String])) }
622
+ attr_reader :include_selectors
623
+
624
+ sig { params(include_selectors: T::Array[String]).void }
625
+ attr_writer :include_selectors
626
+
606
627
  # Plain-language goal describing which page changes matter. When provided without
607
628
  # change_detection, semantic detection is inferred.
608
629
  sig { returns(T.nilable(String)) }
@@ -623,6 +644,8 @@ module ContextDev
623
644
  sig do
624
645
  params(
625
646
  url: String,
647
+ exclude_selectors: T::Array[String],
648
+ include_selectors: T::Array[String],
626
649
  instructions: String,
627
650
  normalize_whitespace: T::Boolean,
628
651
  type: Symbol
@@ -630,6 +653,17 @@ module ContextDev
630
653
  end
631
654
  def self.new(
632
655
  url:,
656
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
657
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
658
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
659
+ # creates a new baseline.
660
+ exclude_selectors: nil,
661
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
662
+ # combined in document order before text extraction, instead of automatic
663
+ # main-content selection. Omit or pass an empty array to use automatic
664
+ # main-content extraction. If the filtered page has no usable text, the run fails
665
+ # without replacing the baseline. Changing these selectors creates a new baseline.
666
+ include_selectors: nil,
633
667
  # Plain-language goal describing which page changes matter. When provided without
634
668
  # change_detection, semantic detection is inferred.
635
669
  instructions: nil,
@@ -644,6 +678,8 @@ module ContextDev
644
678
  {
645
679
  type: Symbol,
646
680
  url: String,
681
+ exclude_selectors: T::Array[String],
682
+ include_selectors: T::Array[String],
647
683
  instructions: String,
648
684
  normalize_whitespace: T::Boolean
649
685
  }
@@ -1058,7 +1094,8 @@ module ContextDev
1058
1094
  )
1059
1095
  end
1060
1096
 
1061
- # Webhook URL events are delivered to.
1097
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1098
+ # automatically formatted as Slack messages.
1062
1099
  sig { returns(String) }
1063
1100
  attr_accessor :url
1064
1101
 
@@ -1094,7 +1131,8 @@ module ContextDev
1094
1131
  sig { params(retry_: ContextDev::RetryConfig::OrHash).void }
1095
1132
  attr_writer :retry_
1096
1133
 
1097
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1134
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1135
+ # has monitors:write permission or full access. Each delivery includes an
1098
1136
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1099
1137
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1100
1138
  # compare and reject stale timestamps to prevent replay. Generated by the API;
@@ -1117,7 +1155,8 @@ module ContextDev
1117
1155
  ).returns(T.attached_class)
1118
1156
  end
1119
1157
  def self.new(
1120
- # Webhook URL events are delivered to.
1158
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1159
+ # automatically formatted as Slack messages.
1121
1160
  url:,
1122
1161
  # Events delivered to this endpoint. `change.detected` fires only when a run
1123
1162
  # detects a change; `run.completed` fires on every completed run — including runs
@@ -1126,7 +1165,8 @@ module ContextDev
1126
1165
  events: nil,
1127
1166
  # Webhook retry settings. Use {} for the default schedule.
1128
1167
  retry_: nil,
1129
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1168
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1169
+ # has monitors:write permission or full access. Each delivery includes an
1130
1170
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1131
1171
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1132
1172
  # compare and reject stale timestamps to prevent replay. Generated by the API;
@@ -655,6 +655,27 @@ module ContextDev
655
655
  sig { returns(String) }
656
656
  attr_accessor :url
657
657
 
658
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
659
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
660
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
661
+ # creates a new baseline.
662
+ sig { returns(T.nilable(T::Array[String])) }
663
+ attr_reader :exclude_selectors
664
+
665
+ sig { params(exclude_selectors: T::Array[String]).void }
666
+ attr_writer :exclude_selectors
667
+
668
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
669
+ # combined in document order before text extraction, instead of automatic
670
+ # main-content selection. Omit or pass an empty array to use automatic
671
+ # main-content extraction. If the filtered page has no usable text, the run fails
672
+ # without replacing the baseline. Changing these selectors creates a new baseline.
673
+ sig { returns(T.nilable(T::Array[String])) }
674
+ attr_reader :include_selectors
675
+
676
+ sig { params(include_selectors: T::Array[String]).void }
677
+ attr_writer :include_selectors
678
+
658
679
  # Plain-language goal describing which page changes matter. When provided without
659
680
  # change_detection, semantic detection is inferred.
660
681
  sig { returns(T.nilable(String)) }
@@ -675,6 +696,8 @@ module ContextDev
675
696
  sig do
676
697
  params(
677
698
  url: String,
699
+ exclude_selectors: T::Array[String],
700
+ include_selectors: T::Array[String],
678
701
  instructions: String,
679
702
  normalize_whitespace: T::Boolean,
680
703
  type: Symbol
@@ -682,6 +705,17 @@ module ContextDev
682
705
  end
683
706
  def self.new(
684
707
  url:,
708
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
709
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
710
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
711
+ # creates a new baseline.
712
+ exclude_selectors: nil,
713
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
714
+ # combined in document order before text extraction, instead of automatic
715
+ # main-content selection. Omit or pass an empty array to use automatic
716
+ # main-content extraction. If the filtered page has no usable text, the run fails
717
+ # without replacing the baseline. Changing these selectors creates a new baseline.
718
+ include_selectors: nil,
685
719
  # Plain-language goal describing which page changes matter. When provided without
686
720
  # change_detection, semantic detection is inferred.
687
721
  instructions: nil,
@@ -696,6 +730,8 @@ module ContextDev
696
730
  {
697
731
  type: Symbol,
698
732
  url: String,
733
+ exclude_selectors: T::Array[String],
734
+ include_selectors: T::Array[String],
699
735
  instructions: String,
700
736
  normalize_whitespace: T::Boolean
701
737
  }
@@ -1116,7 +1152,8 @@ module ContextDev
1116
1152
  )
1117
1153
  end
1118
1154
 
1119
- # Webhook URL events are delivered to.
1155
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1156
+ # automatically formatted as Slack messages.
1120
1157
  sig { returns(String) }
1121
1158
  attr_accessor :url
1122
1159
 
@@ -1152,7 +1189,8 @@ module ContextDev
1152
1189
  sig { params(retry_: ContextDev::RetryConfig::OrHash).void }
1153
1190
  attr_writer :retry_
1154
1191
 
1155
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1192
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1193
+ # has monitors:write permission or full access. Each delivery includes an
1156
1194
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1157
1195
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1158
1196
  # compare and reject stale timestamps to prevent replay. Generated by the API;
@@ -1175,7 +1213,8 @@ module ContextDev
1175
1213
  ).returns(T.attached_class)
1176
1214
  end
1177
1215
  def self.new(
1178
- # Webhook URL events are delivered to.
1216
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1217
+ # automatically formatted as Slack messages.
1179
1218
  url:,
1180
1219
  # Events delivered to this endpoint. `change.detected` fires only when a run
1181
1220
  # detects a change; `run.completed` fires on every completed run — including runs
@@ -1184,7 +1223,8 @@ module ContextDev
1184
1223
  events: nil,
1185
1224
  # Webhook retry settings. Use {} for the default schedule.
1186
1225
  retry_: nil,
1187
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1226
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1227
+ # has monitors:write permission or full access. Each delivery includes an
1188
1228
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1189
1229
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1190
1230
  # compare and reject stale timestamps to prevent replay. Generated by the API;
@@ -599,6 +599,27 @@ module ContextDev
599
599
  sig { returns(String) }
600
600
  attr_accessor :url
601
601
 
602
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
603
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
604
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
605
+ # creates a new baseline.
606
+ sig { returns(T.nilable(T::Array[String])) }
607
+ attr_reader :exclude_selectors
608
+
609
+ sig { params(exclude_selectors: T::Array[String]).void }
610
+ attr_writer :exclude_selectors
611
+
612
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
613
+ # combined in document order before text extraction, instead of automatic
614
+ # main-content selection. Omit or pass an empty array to use automatic
615
+ # main-content extraction. If the filtered page has no usable text, the run fails
616
+ # without replacing the baseline. Changing these selectors creates a new baseline.
617
+ sig { returns(T.nilable(T::Array[String])) }
618
+ attr_reader :include_selectors
619
+
620
+ sig { params(include_selectors: T::Array[String]).void }
621
+ attr_writer :include_selectors
622
+
602
623
  # Plain-language goal describing which page changes matter. When provided without
603
624
  # change_detection, semantic detection is inferred.
604
625
  sig { returns(T.nilable(String)) }
@@ -619,6 +640,8 @@ module ContextDev
619
640
  sig do
620
641
  params(
621
642
  url: String,
643
+ exclude_selectors: T::Array[String],
644
+ include_selectors: T::Array[String],
622
645
  instructions: String,
623
646
  normalize_whitespace: T::Boolean,
624
647
  type: Symbol
@@ -626,6 +649,17 @@ module ContextDev
626
649
  end
627
650
  def self.new(
628
651
  url:,
652
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
653
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
654
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
655
+ # creates a new baseline.
656
+ exclude_selectors: nil,
657
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
658
+ # combined in document order before text extraction, instead of automatic
659
+ # main-content selection. Omit or pass an empty array to use automatic
660
+ # main-content extraction. If the filtered page has no usable text, the run fails
661
+ # without replacing the baseline. Changing these selectors creates a new baseline.
662
+ include_selectors: nil,
629
663
  # Plain-language goal describing which page changes matter. When provided without
630
664
  # change_detection, semantic detection is inferred.
631
665
  instructions: nil,
@@ -640,6 +674,8 @@ module ContextDev
640
674
  {
641
675
  type: Symbol,
642
676
  url: String,
677
+ exclude_selectors: T::Array[String],
678
+ include_selectors: T::Array[String],
643
679
  instructions: String,
644
680
  normalize_whitespace: T::Boolean
645
681
  }
@@ -1054,7 +1090,8 @@ module ContextDev
1054
1090
  )
1055
1091
  end
1056
1092
 
1057
- # Webhook URL events are delivered to.
1093
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1094
+ # automatically formatted as Slack messages.
1058
1095
  sig { returns(String) }
1059
1096
  attr_accessor :url
1060
1097
 
@@ -1090,7 +1127,8 @@ module ContextDev
1090
1127
  sig { params(retry_: ContextDev::RetryConfig::OrHash).void }
1091
1128
  attr_writer :retry_
1092
1129
 
1093
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1130
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1131
+ # has monitors:write permission or full access. Each delivery includes an
1094
1132
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1095
1133
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1096
1134
  # compare and reject stale timestamps to prevent replay. Generated by the API;
@@ -1113,7 +1151,8 @@ module ContextDev
1113
1151
  ).returns(T.attached_class)
1114
1152
  end
1115
1153
  def self.new(
1116
- # Webhook URL events are delivered to.
1154
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1155
+ # automatically formatted as Slack messages.
1117
1156
  url:,
1118
1157
  # Events delivered to this endpoint. `change.detected` fires only when a run
1119
1158
  # detects a change; `run.completed` fires on every completed run — including runs
@@ -1122,7 +1161,8 @@ module ContextDev
1122
1161
  events: nil,
1123
1162
  # Webhook retry settings. Use {} for the default schedule.
1124
1163
  retry_: nil,
1125
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1164
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1165
+ # has monitors:write permission or full access. Each delivery includes an
1126
1166
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1127
1167
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1128
1168
  # compare and reject stale timestamps to prevent replay. Generated by the API;