context.dev 2.15.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 (229) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +2 -2
  4. data/lib/context_dev/client.rb +6 -0
  5. data/lib/context_dev/internal/type/base_model.rb +2 -2
  6. data/lib/context_dev/models/ai_extract_product_params.rb +53 -8
  7. data/lib/context_dev/models/ai_extract_product_response.rb +19 -1
  8. data/lib/context_dev/models/ai_extract_products_params.rb +116 -16
  9. data/lib/context_dev/models/ai_extract_products_response.rb +20 -1
  10. data/lib/context_dev/models/batch_cancel_response.rb +10 -1
  11. data/lib/context_dev/models/batch_delete_response.rb +13 -1
  12. data/lib/context_dev/models/batch_get_results_response.rb +13 -1
  13. data/lib/context_dev/models/batch_list_response.rb +13 -1
  14. data/lib/context_dev/models/batch_retrieve_response.rb +10 -1
  15. data/lib/context_dev/models/batch_submit_response.rb +10 -1
  16. data/lib/context_dev/models/brand_retrieve_params.rb +355 -60
  17. data/lib/context_dev/models/brand_retrieve_response.rb +19 -1
  18. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +57 -11
  19. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +19 -1
  20. data/lib/context_dev/models/brand_search_response.rb +10 -1
  21. data/lib/context_dev/models/industry_retrieve_naics_params.rb +53 -8
  22. data/lib/context_dev/models/industry_retrieve_naics_response.rb +22 -1
  23. data/lib/context_dev/models/industry_retrieve_sic_params.rb +53 -8
  24. data/lib/context_dev/models/industry_retrieve_sic_response.rb +19 -1
  25. data/lib/context_dev/models/log_list_params.rb +108 -0
  26. data/lib/context_dev/models/log_list_response.rb +174 -0
  27. data/lib/context_dev/models/log_retrieve_params.rb +22 -0
  28. data/lib/context_dev/models/log_retrieve_response.rb +226 -0
  29. data/lib/context_dev/models/monitor_create_params.rb +27 -3
  30. data/lib/context_dev/models/monitor_create_response.rb +30 -5
  31. data/lib/context_dev/models/monitor_list_response.rb +30 -5
  32. data/lib/context_dev/models/monitor_retrieve_response.rb +30 -5
  33. data/lib/context_dev/models/monitor_update_params.rb +27 -3
  34. data/lib/context_dev/models/monitor_update_response.rb +30 -5
  35. data/lib/context_dev/models/news_search_response.rb +10 -1
  36. data/lib/context_dev/models/parse_handle_response.rb +13 -1
  37. data/lib/context_dev/models/person_enrich_params.rb +53 -8
  38. data/lib/context_dev/models/person_enrich_response.rb +22 -1
  39. data/lib/context_dev/models/utility_prefetch_params.rb +48 -8
  40. data/lib/context_dev/models/utility_prefetch_response.rb +13 -1
  41. data/lib/context_dev/models/web_answers_params.rb +124 -0
  42. data/lib/context_dev/models/web_answers_response.rb +68 -0
  43. data/lib/context_dev/models/web_extract_competitors_params.rb +53 -8
  44. data/lib/context_dev/models/web_extract_competitors_response.rb +22 -1
  45. data/lib/context_dev/models/web_extract_fonts_params.rb +58 -11
  46. data/lib/context_dev/models/web_extract_fonts_response.rb +41 -1
  47. data/lib/context_dev/models/web_extract_params.rb +53 -8
  48. data/lib/context_dev/models/web_extract_response.rb +19 -1
  49. data/lib/context_dev/models/web_extract_styleguide_params.rb +58 -11
  50. data/lib/context_dev/models/web_extract_styleguide_response.rb +41 -1
  51. data/lib/context_dev/models/web_screenshot_params.rb +58 -9
  52. data/lib/context_dev/models/web_screenshot_response.rb +41 -1
  53. data/lib/context_dev/models/web_search_params.rb +112 -16
  54. data/lib/context_dev/models/web_search_response.rb +52 -2
  55. data/lib/context_dev/models/web_web_crawl_md_params.rb +53 -8
  56. data/lib/context_dev/models/web_web_crawl_md_response.rb +20 -1
  57. data/lib/context_dev/models/web_web_scrape_bytes_params.rb +344 -0
  58. data/lib/context_dev/models/web_web_scrape_bytes_response.rb +135 -0
  59. data/lib/context_dev/models/web_web_scrape_html_params.rb +58 -9
  60. data/lib/context_dev/models/web_web_scrape_html_response.rb +41 -1
  61. data/lib/context_dev/models/web_web_scrape_images_params.rb +58 -9
  62. data/lib/context_dev/models/web_web_scrape_images_response.rb +51 -1
  63. data/lib/context_dev/models/web_web_scrape_md_params.rb +58 -9
  64. data/lib/context_dev/models/web_web_scrape_md_response.rb +41 -1
  65. data/lib/context_dev/models/web_web_scrape_sitemap_params.rb +53 -8
  66. data/lib/context_dev/models/web_web_scrape_sitemap_response.rb +20 -1
  67. data/lib/context_dev/models/webhooks/delivery_list_attempts_response.rb +13 -1
  68. data/lib/context_dev/models/webhooks/delivery_list_response.rb +13 -1
  69. data/lib/context_dev/models/webhooks/delivery_retrieve_response.rb +13 -1
  70. data/lib/context_dev/models/webhooks/delivery_retry_response.rb +13 -1
  71. data/lib/context_dev/models.rb +8 -0
  72. data/lib/context_dev/resources/ai.rb +2 -2
  73. data/lib/context_dev/resources/brand.rb +3 -3
  74. data/lib/context_dev/resources/industry.rb +6 -6
  75. data/lib/context_dev/resources/logs.rb +83 -0
  76. data/lib/context_dev/resources/people.rb +2 -2
  77. data/lib/context_dev/resources/utility.rb +2 -2
  78. data/lib/context_dev/resources/web.rb +119 -33
  79. data/lib/context_dev/version.rb +1 -1
  80. data/lib/context_dev.rb +9 -0
  81. data/rbi/context_dev/client.rbi +5 -0
  82. data/rbi/context_dev/models/ai_extract_product_params.rbi +125 -13
  83. data/rbi/context_dev/models/ai_extract_product_response.rbi +23 -0
  84. data/rbi/context_dev/models/ai_extract_products_params.rbi +264 -26
  85. data/rbi/context_dev/models/ai_extract_products_response.rbi +25 -0
  86. data/rbi/context_dev/models/batch_cancel_response.rbi +10 -0
  87. data/rbi/context_dev/models/batch_delete_response.rbi +10 -0
  88. data/rbi/context_dev/models/batch_get_results_response.rbi +10 -0
  89. data/rbi/context_dev/models/batch_list_response.rbi +10 -0
  90. data/rbi/context_dev/models/batch_retrieve_response.rbi +10 -0
  91. data/rbi/context_dev/models/batch_submit_response.rbi +10 -0
  92. data/rbi/context_dev/models/brand_retrieve_params.rbi +816 -102
  93. data/rbi/context_dev/models/brand_retrieve_response.rbi +23 -0
  94. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +136 -19
  95. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +23 -0
  96. data/rbi/context_dev/models/brand_search_response.rbi +10 -0
  97. data/rbi/context_dev/models/industry_retrieve_naics_params.rbi +127 -13
  98. data/rbi/context_dev/models/industry_retrieve_naics_response.rbi +23 -0
  99. data/rbi/context_dev/models/industry_retrieve_sic_params.rbi +127 -13
  100. data/rbi/context_dev/models/industry_retrieve_sic_response.rbi +23 -0
  101. data/rbi/context_dev/models/log_list_params.rbi +162 -0
  102. data/rbi/context_dev/models/log_list_response.rbi +246 -0
  103. data/rbi/context_dev/models/log_retrieve_params.rbi +40 -0
  104. data/rbi/context_dev/models/log_retrieve_response.rbi +370 -0
  105. data/rbi/context_dev/models/monitor_create_params.rbi +40 -2
  106. data/rbi/context_dev/models/monitor_create_response.rbi +44 -4
  107. data/rbi/context_dev/models/monitor_list_response.rbi +44 -4
  108. data/rbi/context_dev/models/monitor_retrieve_response.rbi +44 -4
  109. data/rbi/context_dev/models/monitor_update_params.rbi +40 -2
  110. data/rbi/context_dev/models/monitor_update_response.rbi +44 -4
  111. data/rbi/context_dev/models/news_search_response.rbi +10 -0
  112. data/rbi/context_dev/models/parse_handle_response.rbi +10 -0
  113. data/rbi/context_dev/models/person_enrich_params.rbi +123 -13
  114. data/rbi/context_dev/models/person_enrich_response.rbi +26 -3
  115. data/rbi/context_dev/models/utility_prefetch_params.rbi +112 -13
  116. data/rbi/context_dev/models/utility_prefetch_response.rbi +10 -0
  117. data/rbi/context_dev/models/web_answers_params.rbi +234 -0
  118. data/rbi/context_dev/models/web_answers_response.rbi +122 -0
  119. data/rbi/context_dev/models/web_extract_competitors_params.rbi +127 -13
  120. data/rbi/context_dev/models/web_extract_competitors_response.rbi +26 -3
  121. data/rbi/context_dev/models/web_extract_fonts_params.rbi +132 -19
  122. data/rbi/context_dev/models/web_extract_fonts_response.rbi +81 -0
  123. data/rbi/context_dev/models/web_extract_params.rbi +120 -13
  124. data/rbi/context_dev/models/web_extract_response.rbi +26 -3
  125. data/rbi/context_dev/models/web_extract_styleguide_params.rbi +136 -19
  126. data/rbi/context_dev/models/web_extract_styleguide_response.rbi +81 -0
  127. data/rbi/context_dev/models/web_screenshot_params.rbi +132 -15
  128. data/rbi/context_dev/models/web_screenshot_response.rbi +81 -0
  129. data/rbi/context_dev/models/web_search_params.rbi +253 -26
  130. data/rbi/context_dev/models/web_search_response.rbi +102 -6
  131. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +123 -13
  132. data/rbi/context_dev/models/web_web_crawl_md_response.rbi +29 -3
  133. data/rbi/context_dev/models/web_web_scrape_bytes_params.rbi +699 -0
  134. data/rbi/context_dev/models/web_web_scrape_bytes_response.rbi +238 -0
  135. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +134 -15
  136. data/rbi/context_dev/models/web_web_scrape_html_response.rbi +71 -0
  137. data/rbi/context_dev/models/web_web_scrape_images_params.rbi +136 -15
  138. data/rbi/context_dev/models/web_web_scrape_images_response.rbi +99 -3
  139. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +132 -15
  140. data/rbi/context_dev/models/web_web_scrape_md_response.rbi +71 -0
  141. data/rbi/context_dev/models/web_web_scrape_sitemap_params.rbi +127 -13
  142. data/rbi/context_dev/models/web_web_scrape_sitemap_response.rbi +28 -3
  143. data/rbi/context_dev/models/webhooks/delivery_list_attempts_response.rbi +10 -0
  144. data/rbi/context_dev/models/webhooks/delivery_list_response.rbi +10 -0
  145. data/rbi/context_dev/models/webhooks/delivery_retrieve_response.rbi +10 -0
  146. data/rbi/context_dev/models/webhooks/delivery_retry_response.rbi +10 -0
  147. data/rbi/context_dev/models.rbi +8 -0
  148. data/rbi/context_dev/resources/ai.rbi +5 -5
  149. data/rbi/context_dev/resources/brand.rbi +9 -8
  150. data/rbi/context_dev/resources/industry.rbi +12 -10
  151. data/rbi/context_dev/resources/logs.rbi +76 -0
  152. data/rbi/context_dev/resources/people.rbi +5 -5
  153. data/rbi/context_dev/resources/utility.rbi +5 -5
  154. data/rbi/context_dev/resources/web.rbi +173 -68
  155. data/sig/context_dev/client.rbs +2 -0
  156. data/sig/context_dev/models/ai_extract_product_params.rbs +44 -5
  157. data/sig/context_dev/models/ai_extract_product_response.rbs +12 -0
  158. data/sig/context_dev/models/ai_extract_products_params.rbs +88 -10
  159. data/sig/context_dev/models/ai_extract_products_response.rbs +12 -0
  160. data/sig/context_dev/models/batch_cancel_response.rbs +5 -0
  161. data/sig/context_dev/models/batch_delete_response.rbs +5 -0
  162. data/sig/context_dev/models/batch_get_results_response.rbs +5 -0
  163. data/sig/context_dev/models/batch_list_response.rbs +5 -0
  164. data/sig/context_dev/models/batch_retrieve_response.rbs +5 -0
  165. data/sig/context_dev/models/batch_submit_response.rbs +5 -0
  166. data/sig/context_dev/models/brand_retrieve_params.rbs +264 -30
  167. data/sig/context_dev/models/brand_retrieve_response.rbs +12 -0
  168. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +44 -5
  169. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +12 -0
  170. data/sig/context_dev/models/brand_search_response.rbs +5 -0
  171. data/sig/context_dev/models/industry_retrieve_naics_params.rbs +44 -5
  172. data/sig/context_dev/models/industry_retrieve_naics_response.rbs +12 -0
  173. data/sig/context_dev/models/industry_retrieve_sic_params.rbs +44 -5
  174. data/sig/context_dev/models/industry_retrieve_sic_response.rbs +12 -0
  175. data/sig/context_dev/models/log_list_params.rbs +98 -0
  176. data/sig/context_dev/models/log_list_response.rbs +135 -0
  177. data/sig/context_dev/models/log_retrieve_params.rbs +23 -0
  178. data/sig/context_dev/models/log_retrieve_response.rbs +179 -0
  179. data/sig/context_dev/models/monitor_create_params.rbs +14 -0
  180. data/sig/context_dev/models/monitor_create_response.rbs +14 -0
  181. data/sig/context_dev/models/monitor_list_response.rbs +14 -0
  182. data/sig/context_dev/models/monitor_retrieve_response.rbs +14 -0
  183. data/sig/context_dev/models/monitor_update_params.rbs +14 -0
  184. data/sig/context_dev/models/monitor_update_response.rbs +14 -0
  185. data/sig/context_dev/models/news_search_response.rbs +5 -0
  186. data/sig/context_dev/models/parse_handle_response.rbs +5 -0
  187. data/sig/context_dev/models/person_enrich_params.rbs +44 -5
  188. data/sig/context_dev/models/person_enrich_response.rbs +15 -3
  189. data/sig/context_dev/models/utility_prefetch_params.rbs +43 -5
  190. data/sig/context_dev/models/utility_prefetch_response.rbs +5 -0
  191. data/sig/context_dev/models/web_answers_params.rbs +106 -0
  192. data/sig/context_dev/models/web_answers_response.rbs +60 -0
  193. data/sig/context_dev/models/web_extract_competitors_params.rbs +44 -5
  194. data/sig/context_dev/models/web_extract_competitors_response.rbs +15 -3
  195. data/sig/context_dev/models/web_extract_fonts_params.rbs +44 -5
  196. data/sig/context_dev/models/web_extract_fonts_response.rbs +25 -0
  197. data/sig/context_dev/models/web_extract_params.rbs +44 -5
  198. data/sig/context_dev/models/web_extract_response.rbs +15 -3
  199. data/sig/context_dev/models/web_extract_styleguide_params.rbs +44 -5
  200. data/sig/context_dev/models/web_extract_styleguide_response.rbs +25 -0
  201. data/sig/context_dev/models/web_screenshot_params.rbs +44 -5
  202. data/sig/context_dev/models/web_screenshot_response.rbs +25 -0
  203. data/sig/context_dev/models/web_search_params.rbs +88 -10
  204. data/sig/context_dev/models/web_search_response.rbs +38 -6
  205. data/sig/context_dev/models/web_web_crawl_md_params.rbs +44 -5
  206. data/sig/context_dev/models/web_web_crawl_md_response.rbs +15 -3
  207. data/sig/context_dev/models/web_web_scrape_bytes_params.rbs +531 -0
  208. data/sig/context_dev/models/web_web_scrape_bytes_response.rbs +108 -0
  209. data/sig/context_dev/models/web_web_scrape_html_params.rbs +44 -5
  210. data/sig/context_dev/models/web_web_scrape_html_response.rbs +21 -0
  211. data/sig/context_dev/models/web_web_scrape_images_params.rbs +44 -5
  212. data/sig/context_dev/models/web_web_scrape_images_response.rbs +35 -3
  213. data/sig/context_dev/models/web_web_scrape_md_params.rbs +44 -5
  214. data/sig/context_dev/models/web_web_scrape_md_response.rbs +21 -0
  215. data/sig/context_dev/models/web_web_scrape_sitemap_params.rbs +44 -5
  216. data/sig/context_dev/models/web_web_scrape_sitemap_response.rbs +15 -3
  217. data/sig/context_dev/models/webhooks/delivery_list_attempts_response.rbs +5 -0
  218. data/sig/context_dev/models/webhooks/delivery_list_response.rbs +5 -0
  219. data/sig/context_dev/models/webhooks/delivery_retrieve_response.rbs +7 -0
  220. data/sig/context_dev/models/webhooks/delivery_retry_response.rbs +5 -0
  221. data/sig/context_dev/models.rbs +8 -0
  222. data/sig/context_dev/resources/ai.rbs +1 -1
  223. data/sig/context_dev/resources/brand.rbs +1 -1
  224. data/sig/context_dev/resources/industry.rbs +2 -2
  225. data/sig/context_dev/resources/logs.rbs +27 -0
  226. data/sig/context_dev/resources/people.rbs +1 -1
  227. data/sig/context_dev/resources/utility.rbs +1 -1
  228. data/sig/context_dev/resources/web.rbs +30 -11
  229. metadata +29 -2
@@ -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;
@@ -33,6 +33,11 @@ module ContextDev
33
33
  sig { returns(T.nilable(String)) }
34
34
  attr_accessor :next_cursor
35
35
 
36
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
37
+ # it when contacting support about a failed request.
38
+ sig { returns(String) }
39
+ attr_accessor :request_id
40
+
36
41
  # Credit usage, included whenever a valid API key is provided.
37
42
  sig do
38
43
  returns(T.nilable(ContextDev::Models::NewsSearchResponse::KeyMetadata))
@@ -53,6 +58,7 @@ module ContextDev
53
58
  has_more: T::Boolean,
54
59
  meta: ContextDev::Models::NewsSearchResponse::Meta::OrHash,
55
60
  next_cursor: T.nilable(String),
61
+ request_id: String,
56
62
  key_metadata:
57
63
  ContextDev::Models::NewsSearchResponse::KeyMetadata::OrHash
58
64
  ).returns(T.attached_class)
@@ -67,6 +73,9 @@ module ContextDev
67
73
  # Pass as cursor in the next request to fetch the following page. Null when there
68
74
  # are no more results.
69
75
  next_cursor:,
76
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
77
+ # it when contacting support about a failed request.
78
+ request_id:,
70
79
  # Credit usage, included whenever a valid API key is provided.
71
80
  key_metadata: nil
72
81
  )
@@ -79,6 +88,7 @@ module ContextDev
79
88
  has_more: T::Boolean,
80
89
  meta: ContextDev::Models::NewsSearchResponse::Meta,
81
90
  next_cursor: T.nilable(String),
91
+ request_id: String,
82
92
  key_metadata: ContextDev::Models::NewsSearchResponse::KeyMetadata
83
93
  }
84
94
  )
@@ -15,6 +15,11 @@ module ContextDev
15
15
  sig { returns(String) }
16
16
  attr_accessor :markdown
17
17
 
18
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
19
+ # it when contacting support about a failed request.
20
+ sig { returns(String) }
21
+ attr_accessor :request_id
22
+
18
23
  # Indicates success
19
24
  sig do
20
25
  returns(ContextDev::Models::ParseHandleResponse::Success::TaggedBoolean)
@@ -44,6 +49,7 @@ module ContextDev
44
49
  sig do
45
50
  params(
46
51
  markdown: String,
52
+ request_id: String,
47
53
  success: ContextDev::Models::ParseHandleResponse::Success::OrBoolean,
48
54
  type: ContextDev::Models::ParseHandleResponse::Type::OrSymbol,
49
55
  key_metadata:
@@ -53,6 +59,9 @@ module ContextDev
53
59
  def self.new(
54
60
  # Input bytes converted to GitHub Flavored Markdown
55
61
  markdown:,
62
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
63
+ # it when contacting support about a failed request.
64
+ request_id:,
56
65
  # Indicates success
57
66
  success:,
58
67
  # Detected content type used for parsing
@@ -66,6 +75,7 @@ module ContextDev
66
75
  override.returns(
67
76
  {
68
77
  markdown: String,
78
+ request_id: String,
69
79
  success:
70
80
  ContextDev::Models::ParseHandleResponse::Success::TaggedBoolean,
71
81
  type: ContextDev::Models::ParseHandleResponse::Type::TaggedSymbol,
@@ -64,14 +64,18 @@ module ContextDev
64
64
  sig { params(tags: T::Array[String]).void }
65
65
  attr_writer :tags
66
66
 
67
- # Optional timeout in milliseconds for the request. If the request takes longer
68
- # than this value, it will be aborted with a 408 status code. Maximum allowed
69
- # value is 300000ms (5 minutes).
70
- sig { returns(T.nilable(Integer)) }
71
- attr_reader :timeout_ms
67
+ # Optional request deadline and behavior on timeout. For GET requests, use
68
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
69
+ # timeoutOpts object.
70
+ sig { returns(T.nilable(ContextDev::PersonEnrichParams::TimeoutOpts)) }
71
+ attr_reader :timeout_opts
72
72
 
73
- sig { params(timeout_ms: Integer).void }
74
- attr_writer :timeout_ms
73
+ sig do
74
+ params(
75
+ timeout_opts: ContextDev::PersonEnrichParams::TimeoutOpts::OrHash
76
+ ).void
77
+ end
78
+ attr_writer :timeout_opts
75
79
 
76
80
  sig do
77
81
  params(
@@ -83,7 +87,7 @@ module ContextDev
83
87
  name: ContextDev::PersonEnrichParams::Name::OrHash,
84
88
  social_urls: T::Array[String],
85
89
  tags: T::Array[String],
86
- timeout_ms: Integer,
90
+ timeout_opts: ContextDev::PersonEnrichParams::TimeoutOpts::OrHash,
87
91
  request_options: ContextDev::RequestOptions::OrHash
88
92
  ).returns(T.attached_class)
89
93
  end
@@ -96,10 +100,10 @@ module ContextDev
96
100
  social_urls: nil,
97
101
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
98
102
  tags: nil,
99
- # Optional timeout in milliseconds for the request. If the request takes longer
100
- # than this value, it will be aborted with a 408 status code. Maximum allowed
101
- # value is 300000ms (5 minutes).
102
- timeout_ms: nil,
103
+ # Optional request deadline and behavior on timeout. For GET requests, use
104
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
105
+ # timeoutOpts object.
106
+ timeout_opts: nil,
103
107
  request_options: {}
104
108
  )
105
109
  end
@@ -114,7 +118,7 @@ module ContextDev
114
118
  name: ContextDev::PersonEnrichParams::Name,
115
119
  social_urls: T::Array[String],
116
120
  tags: T::Array[String],
117
- timeout_ms: Integer,
121
+ timeout_opts: ContextDev::PersonEnrichParams::TimeoutOpts,
118
122
  request_options: ContextDev::RequestOptions
119
123
  }
120
124
  )
@@ -327,6 +331,112 @@ module ContextDev
327
331
  def to_hash
328
332
  end
329
333
  end
334
+
335
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
336
+ OrHash =
337
+ T.type_alias do
338
+ T.any(
339
+ ContextDev::PersonEnrichParams::TimeoutOpts,
340
+ ContextDev::Internal::AnyHash
341
+ )
342
+ end
343
+
344
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
345
+ sig { returns(Integer) }
346
+ attr_accessor :milliseconds
347
+
348
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
349
+ # credits. "return-partial" returns usable results collected so far; if none are
350
+ # available, the request still fails without charging credits. Partial results are
351
+ # not cached as complete results.
352
+ sig do
353
+ returns(
354
+ T.nilable(
355
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::OrSymbol
356
+ )
357
+ )
358
+ end
359
+ attr_reader :behavior
360
+
361
+ sig do
362
+ params(
363
+ behavior:
364
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::OrSymbol
365
+ ).void
366
+ end
367
+ attr_writer :behavior
368
+
369
+ # Optional request deadline and behavior on timeout. For GET requests, use
370
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
371
+ # timeoutOpts object.
372
+ sig do
373
+ params(
374
+ milliseconds: Integer,
375
+ behavior:
376
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::OrSymbol
377
+ ).returns(T.attached_class)
378
+ end
379
+ def self.new(
380
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
381
+ milliseconds:,
382
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
383
+ # credits. "return-partial" returns usable results collected so far; if none are
384
+ # available, the request still fails without charging credits. Partial results are
385
+ # not cached as complete results.
386
+ behavior: nil
387
+ )
388
+ end
389
+
390
+ sig do
391
+ override.returns(
392
+ {
393
+ milliseconds: Integer,
394
+ behavior:
395
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::OrSymbol
396
+ }
397
+ )
398
+ end
399
+ def to_hash
400
+ end
401
+
402
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
403
+ # credits. "return-partial" returns usable results collected so far; if none are
404
+ # available, the request still fails without charging credits. Partial results are
405
+ # not cached as complete results.
406
+ module Behavior
407
+ extend ContextDev::Internal::Type::Enum
408
+
409
+ TaggedSymbol =
410
+ T.type_alias do
411
+ T.all(
412
+ Symbol,
413
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior
414
+ )
415
+ end
416
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
417
+
418
+ FAIL =
419
+ T.let(
420
+ :fail,
421
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::TaggedSymbol
422
+ )
423
+ RETURN_PARTIAL =
424
+ T.let(
425
+ :"return-partial",
426
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::TaggedSymbol
427
+ )
428
+
429
+ sig do
430
+ override.returns(
431
+ T::Array[
432
+ ContextDev::PersonEnrichParams::TimeoutOpts::Behavior::TaggedSymbol
433
+ ]
434
+ )
435
+ end
436
+ def self.values
437
+ end
438
+ end
439
+ end
330
440
  end
331
441
  end
332
442
  end
@@ -15,6 +15,11 @@ module ContextDev
15
15
  sig { returns(ContextDev::Models::PersonEnrichResponse::Match::Variants) }
16
16
  attr_accessor :match
17
17
 
18
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
19
+ # it when contacting support about a failed request.
20
+ sig { returns(String) }
21
+ attr_accessor :request_id
22
+
18
23
  # Credit usage, included whenever a valid API key is provided.
19
24
  sig do
20
25
  returns(
@@ -31,6 +36,14 @@ module ContextDev
31
36
  end
32
37
  attr_writer :key_metadata
33
38
 
39
+ # True when the timeout ended processing and this response contains the usable
40
+ # data completed so far. Unfinished fields are omitted.
41
+ sig { returns(T.nilable(T::Boolean)) }
42
+ attr_reader :partial
43
+
44
+ sig { params(partial: T::Boolean).void }
45
+ attr_writer :partial
46
+
34
47
  sig do
35
48
  params(
36
49
  match:
@@ -38,15 +51,23 @@ module ContextDev
38
51
  ContextDev::Models::PersonEnrichResponse::Match::Candidate::OrHash,
39
52
  ContextDev::Models::PersonEnrichResponse::Match::NotFound::OrHash
40
53
  ),
54
+ request_id: String,
41
55
  key_metadata:
42
- ContextDev::Models::PersonEnrichResponse::KeyMetadata::OrHash
56
+ ContextDev::Models::PersonEnrichResponse::KeyMetadata::OrHash,
57
+ partial: T::Boolean
43
58
  ).returns(T.attached_class)
44
59
  end
45
60
  def self.new(
46
61
  # The highest-scoring person candidate.
47
62
  match:,
63
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
64
+ # it when contacting support about a failed request.
65
+ request_id:,
48
66
  # Credit usage, included whenever a valid API key is provided.
49
- key_metadata: nil
67
+ key_metadata: nil,
68
+ # True when the timeout ended processing and this response contains the usable
69
+ # data completed so far. Unfinished fields are omitted.
70
+ partial: nil
50
71
  )
51
72
  end
52
73
 
@@ -54,7 +75,9 @@ module ContextDev
54
75
  override.returns(
55
76
  {
56
77
  match: ContextDev::Models::PersonEnrichResponse::Match::Variants,
57
- key_metadata: ContextDev::Models::PersonEnrichResponse::KeyMetadata
78
+ request_id: String,
79
+ key_metadata: ContextDev::Models::PersonEnrichResponse::KeyMetadata,
80
+ partial: T::Boolean
58
81
  }
59
82
  )
60
83
  end