context.dev 2.16.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -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 +10 -1
  10. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +57 -11
  11. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +10 -1
  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 +43 -2
  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 +13 -0
  66. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +136 -19
  67. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +13 -0
  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 +92 -6
  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 +7 -0
  120. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +44 -5
  121. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +7 -0
  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
@@ -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;
@@ -432,6 +432,27 @@ module ContextDev
432
432
  sig { returns(String) }
433
433
  attr_accessor :url
434
434
 
435
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
436
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
437
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
438
+ # creates a new baseline.
439
+ sig { returns(T.nilable(T::Array[String])) }
440
+ attr_reader :exclude_selectors
441
+
442
+ sig { params(exclude_selectors: T::Array[String]).void }
443
+ attr_writer :exclude_selectors
444
+
445
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
446
+ # combined in document order before text extraction, instead of automatic
447
+ # main-content selection. Omit or pass an empty array to use automatic
448
+ # main-content extraction. If the filtered page has no usable text, the run fails
449
+ # without replacing the baseline. Changing these selectors creates a new baseline.
450
+ sig { returns(T.nilable(T::Array[String])) }
451
+ attr_reader :include_selectors
452
+
453
+ sig { params(include_selectors: T::Array[String]).void }
454
+ attr_writer :include_selectors
455
+
435
456
  # Plain-language goal describing which page changes matter. When provided without
436
457
  # change_detection, semantic detection is inferred.
437
458
  sig { returns(T.nilable(String)) }
@@ -452,6 +473,8 @@ module ContextDev
452
473
  sig do
453
474
  params(
454
475
  url: String,
476
+ exclude_selectors: T::Array[String],
477
+ include_selectors: T::Array[String],
455
478
  instructions: String,
456
479
  normalize_whitespace: T::Boolean,
457
480
  type: Symbol
@@ -459,6 +482,17 @@ module ContextDev
459
482
  end
460
483
  def self.new(
461
484
  url:,
485
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
486
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
487
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
488
+ # creates a new baseline.
489
+ exclude_selectors: nil,
490
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
491
+ # combined in document order before text extraction, instead of automatic
492
+ # main-content selection. Omit or pass an empty array to use automatic
493
+ # main-content extraction. If the filtered page has no usable text, the run fails
494
+ # without replacing the baseline. Changing these selectors creates a new baseline.
495
+ include_selectors: nil,
462
496
  # Plain-language goal describing which page changes matter. When provided without
463
497
  # change_detection, semantic detection is inferred.
464
498
  instructions: nil,
@@ -473,6 +507,8 @@ module ContextDev
473
507
  {
474
508
  type: Symbol,
475
509
  url: String,
510
+ exclude_selectors: T::Array[String],
511
+ include_selectors: T::Array[String],
476
512
  instructions: String,
477
513
  normalize_whitespace: T::Boolean
478
514
  }
@@ -691,7 +727,8 @@ module ContextDev
691
727
  )
692
728
  end
693
729
 
694
- # Webhook URL events are delivered to.
730
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
731
+ # automatically formatted as Slack messages.
695
732
  sig { returns(String) }
696
733
  attr_accessor :url
697
734
 
@@ -739,7 +776,8 @@ module ContextDev
739
776
  ).returns(T.attached_class)
740
777
  end
741
778
  def self.new(
742
- # Webhook URL events are delivered to.
779
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
780
+ # automatically formatted as Slack messages.
743
781
  url:,
744
782
  # Events delivered to this endpoint. `change.detected` fires only when a run
745
783
  # detects a change; `run.completed` fires on every completed run — including runs
@@ -591,6 +591,27 @@ module ContextDev
591
591
  sig { returns(String) }
592
592
  attr_accessor :url
593
593
 
594
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
595
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
596
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
597
+ # creates a new baseline.
598
+ sig { returns(T.nilable(T::Array[String])) }
599
+ attr_reader :exclude_selectors
600
+
601
+ sig { params(exclude_selectors: T::Array[String]).void }
602
+ attr_writer :exclude_selectors
603
+
604
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
605
+ # combined in document order before text extraction, instead of automatic
606
+ # main-content selection. Omit or pass an empty array to use automatic
607
+ # main-content extraction. If the filtered page has no usable text, the run fails
608
+ # without replacing the baseline. Changing these selectors creates a new baseline.
609
+ sig { returns(T.nilable(T::Array[String])) }
610
+ attr_reader :include_selectors
611
+
612
+ sig { params(include_selectors: T::Array[String]).void }
613
+ attr_writer :include_selectors
614
+
594
615
  # Plain-language goal describing which page changes matter. When provided without
595
616
  # change_detection, semantic detection is inferred.
596
617
  sig { returns(T.nilable(String)) }
@@ -611,6 +632,8 @@ module ContextDev
611
632
  sig do
612
633
  params(
613
634
  url: String,
635
+ exclude_selectors: T::Array[String],
636
+ include_selectors: T::Array[String],
614
637
  instructions: String,
615
638
  normalize_whitespace: T::Boolean,
616
639
  type: Symbol
@@ -618,6 +641,17 @@ module ContextDev
618
641
  end
619
642
  def self.new(
620
643
  url:,
644
+ # CSS selectors for HTML regions to remove before text extraction. Applied after
645
+ # include_selectors; exclusion takes precedence when an element matches both. Omit
646
+ # or pass an empty array to apply no explicit exclusions. Changing these selectors
647
+ # creates a new baseline.
648
+ exclude_selectors: nil,
649
+ # CSS selectors defining the HTML regions to monitor. Matching subtrees are
650
+ # combined in document order before text extraction, instead of automatic
651
+ # main-content selection. Omit or pass an empty array to use automatic
652
+ # main-content extraction. If the filtered page has no usable text, the run fails
653
+ # without replacing the baseline. Changing these selectors creates a new baseline.
654
+ include_selectors: nil,
621
655
  # Plain-language goal describing which page changes matter. When provided without
622
656
  # change_detection, semantic detection is inferred.
623
657
  instructions: nil,
@@ -632,6 +666,8 @@ module ContextDev
632
666
  {
633
667
  type: Symbol,
634
668
  url: String,
669
+ exclude_selectors: T::Array[String],
670
+ include_selectors: T::Array[String],
635
671
  instructions: String,
636
672
  normalize_whitespace: T::Boolean
637
673
  }
@@ -1046,7 +1082,8 @@ module ContextDev
1046
1082
  )
1047
1083
  end
1048
1084
 
1049
- # Webhook URL events are delivered to.
1085
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1086
+ # automatically formatted as Slack messages.
1050
1087
  sig { returns(String) }
1051
1088
  attr_accessor :url
1052
1089
 
@@ -1082,7 +1119,8 @@ module ContextDev
1082
1119
  sig { params(retry_: ContextDev::RetryConfig::OrHash).void }
1083
1120
  attr_writer :retry_
1084
1121
 
1085
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1122
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1123
+ # has monitors:write permission or full access. Each delivery includes an
1086
1124
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1087
1125
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1088
1126
  # compare and reject stale timestamps to prevent replay. Generated by the API;
@@ -1105,7 +1143,8 @@ module ContextDev
1105
1143
  ).returns(T.attached_class)
1106
1144
  end
1107
1145
  def self.new(
1108
- # Webhook URL events are delivered to.
1146
+ # Webhook URL events are delivered to. Slack incoming webhook URLs are
1147
+ # automatically formatted as Slack messages.
1109
1148
  url:,
1110
1149
  # Events delivered to this endpoint. `change.detected` fires only when a run
1111
1150
  # detects a change; `run.completed` fires on every completed run — including runs
@@ -1114,7 +1153,8 @@ module ContextDev
1114
1153
  events: nil,
1115
1154
  # Webhook retry settings. Use {} for the default schedule.
1116
1155
  retry_: nil,
1117
- # Signing secret used to verify webhook authenticity. Each delivery includes an
1156
+ # Signing secret used to verify webhook authenticity. Omitted unless the API key
1157
+ # has monitors:write permission or full access. Each delivery includes an
1118
1158
  # `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
1119
1159
  # `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
1120
1160
  # compare and reject stale timestamps to prevent replay. Generated by the API;