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
@@ -85,14 +85,18 @@ module ContextDev
85
85
  sig { params(tags: T::Array[String]).void }
86
86
  attr_writer :tags
87
87
 
88
- # Optional timeout in milliseconds for the request. If the request takes longer
89
- # than this value, it will be aborted with a 408 status code. Maximum allowed
90
- # value is 300000ms (5 minutes).
91
- sig { returns(T.nilable(Integer)) }
92
- attr_reader :timeout_ms
88
+ # Optional request deadline and behavior on timeout. For GET requests, use
89
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
90
+ # timeoutOpts object.
91
+ sig { returns(T.nilable(ContextDev::WebSearchParams::TimeoutOpts)) }
92
+ attr_reader :timeout_opts
93
93
 
94
- sig { params(timeout_ms: Integer).void }
95
- attr_writer :timeout_ms
94
+ sig do
95
+ params(
96
+ timeout_opts: ContextDev::WebSearchParams::TimeoutOpts::OrHash
97
+ ).void
98
+ end
99
+ attr_writer :timeout_opts
96
100
 
97
101
  sig do
98
102
  params(
@@ -106,7 +110,7 @@ module ContextDev
106
110
  num_results: Integer,
107
111
  query_fanout: T::Boolean,
108
112
  tags: T::Array[String],
109
- timeout_ms: Integer,
113
+ timeout_opts: ContextDev::WebSearchParams::TimeoutOpts::OrHash,
110
114
  request_options: ContextDev::RequestOptions::OrHash
111
115
  ).returns(T.attached_class)
112
116
  end
@@ -133,10 +137,10 @@ module ContextDev
133
137
  query_fanout: nil,
134
138
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
135
139
  tags: nil,
136
- # Optional timeout in milliseconds for the request. If the request takes longer
137
- # than this value, it will be aborted with a 408 status code. Maximum allowed
138
- # value is 300000ms (5 minutes).
139
- timeout_ms: nil,
140
+ # Optional request deadline and behavior on timeout. For GET requests, use
141
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
142
+ # timeoutOpts object.
143
+ timeout_opts: nil,
140
144
  request_options: {}
141
145
  )
142
146
  end
@@ -153,7 +157,7 @@ module ContextDev
153
157
  num_results: Integer,
154
158
  query_fanout: T::Boolean,
155
159
  tags: T::Array[String],
156
- timeout_ms: Integer,
160
+ timeout_opts: ContextDev::WebSearchParams::TimeoutOpts,
157
161
  request_options: ContextDev::RequestOptions
158
162
  }
159
163
  )
@@ -522,14 +526,23 @@ module ContextDev
522
526
  sig { params(shorten_base64_images: T::Boolean).void }
523
527
  attr_writer :shorten_base64_images
524
528
 
525
- # Optional timeout in milliseconds for the request. If the request takes longer
526
- # than this value, it will be aborted with a 408 status code. Maximum allowed
527
- # value is 300000ms (5 minutes).
528
- sig { returns(T.nilable(Integer)) }
529
- attr_reader :timeout_ms
529
+ # Optional request deadline and behavior on timeout. For GET requests, use
530
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
531
+ # timeoutOpts object.
532
+ sig do
533
+ returns(
534
+ T.nilable(ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts)
535
+ )
536
+ end
537
+ attr_reader :timeout_opts
530
538
 
531
- sig { params(timeout_ms: Integer).void }
532
- attr_writer :timeout_ms
539
+ sig do
540
+ params(
541
+ timeout_opts:
542
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::OrHash
543
+ ).void
544
+ end
545
+ attr_writer :timeout_opts
533
546
 
534
547
  # Strip nav, header, footer, and sidebar — keep only the primary article content.
535
548
  sig { returns(T.nilable(T::Boolean)) }
@@ -556,7 +569,8 @@ module ContextDev
556
569
  max_age_ms: Integer,
557
570
  pdf: ContextDev::WebSearchParams::MarkdownOptions::Pdf::OrHash,
558
571
  shorten_base64_images: T::Boolean,
559
- timeout_ms: Integer,
572
+ timeout_opts:
573
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::OrHash,
560
574
  use_main_content_only: T::Boolean,
561
575
  wait_for_ms: Integer
562
576
  ).returns(T.attached_class)
@@ -577,10 +591,10 @@ module ContextDev
577
591
  pdf: nil,
578
592
  # Truncate inline base64 image payloads to keep responses small.
579
593
  shorten_base64_images: nil,
580
- # Optional timeout in milliseconds for the request. If the request takes longer
581
- # than this value, it will be aborted with a 408 status code. Maximum allowed
582
- # value is 300000ms (5 minutes).
583
- timeout_ms: nil,
594
+ # Optional request deadline and behavior on timeout. For GET requests, use
595
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
596
+ # timeoutOpts object.
597
+ timeout_opts: nil,
584
598
  # Strip nav, header, footer, and sidebar — keep only the primary article content.
585
599
  use_main_content_only: nil,
586
600
  # Extra wait after page load before rendering, in ms (0–30000). Useful for
@@ -599,7 +613,8 @@ module ContextDev
599
613
  max_age_ms: Integer,
600
614
  pdf: ContextDev::WebSearchParams::MarkdownOptions::Pdf,
601
615
  shorten_base64_images: T::Boolean,
602
- timeout_ms: Integer,
616
+ timeout_opts:
617
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts,
603
618
  use_main_content_only: T::Boolean,
604
619
  wait_for_ms: Integer
605
620
  }
@@ -666,6 +681,218 @@ module ContextDev
666
681
  def to_hash
667
682
  end
668
683
  end
684
+
685
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
686
+ OrHash =
687
+ T.type_alias do
688
+ T.any(
689
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts,
690
+ ContextDev::Internal::AnyHash
691
+ )
692
+ end
693
+
694
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
695
+ sig { returns(Integer) }
696
+ attr_accessor :milliseconds
697
+
698
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
699
+ # credits. "return-partial" returns usable results collected so far; if none are
700
+ # available, the request still fails without charging credits. Partial results are
701
+ # not cached as complete results. "return-partial" requires milliseconds of at
702
+ # least 15000.
703
+ sig do
704
+ returns(
705
+ T.nilable(
706
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
707
+ )
708
+ )
709
+ end
710
+ attr_reader :behavior
711
+
712
+ sig do
713
+ params(
714
+ behavior:
715
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
716
+ ).void
717
+ end
718
+ attr_writer :behavior
719
+
720
+ # Optional request deadline and behavior on timeout. For GET requests, use
721
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
722
+ # timeoutOpts object.
723
+ sig do
724
+ params(
725
+ milliseconds: Integer,
726
+ behavior:
727
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
728
+ ).returns(T.attached_class)
729
+ end
730
+ def self.new(
731
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
732
+ milliseconds:,
733
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
734
+ # credits. "return-partial" returns usable results collected so far; if none are
735
+ # available, the request still fails without charging credits. Partial results are
736
+ # not cached as complete results. "return-partial" requires milliseconds of at
737
+ # least 15000.
738
+ behavior: nil
739
+ )
740
+ end
741
+
742
+ sig do
743
+ override.returns(
744
+ {
745
+ milliseconds: Integer,
746
+ behavior:
747
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
748
+ }
749
+ )
750
+ end
751
+ def to_hash
752
+ end
753
+
754
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
755
+ # credits. "return-partial" returns usable results collected so far; if none are
756
+ # available, the request still fails without charging credits. Partial results are
757
+ # not cached as complete results. "return-partial" requires milliseconds of at
758
+ # least 15000.
759
+ module Behavior
760
+ extend ContextDev::Internal::Type::Enum
761
+
762
+ TaggedSymbol =
763
+ T.type_alias do
764
+ T.all(
765
+ Symbol,
766
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior
767
+ )
768
+ end
769
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
770
+
771
+ FAIL =
772
+ T.let(
773
+ :fail,
774
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::TaggedSymbol
775
+ )
776
+ RETURN_PARTIAL =
777
+ T.let(
778
+ :"return-partial",
779
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::TaggedSymbol
780
+ )
781
+
782
+ sig do
783
+ override.returns(
784
+ T::Array[
785
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::TaggedSymbol
786
+ ]
787
+ )
788
+ end
789
+ def self.values
790
+ end
791
+ end
792
+ end
793
+ end
794
+
795
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
796
+ OrHash =
797
+ T.type_alias do
798
+ T.any(
799
+ ContextDev::WebSearchParams::TimeoutOpts,
800
+ ContextDev::Internal::AnyHash
801
+ )
802
+ end
803
+
804
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
805
+ sig { returns(Integer) }
806
+ attr_accessor :milliseconds
807
+
808
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
809
+ # credits. "return-partial" returns usable results collected so far; if none are
810
+ # available, the request still fails without charging credits. Partial results are
811
+ # not cached as complete results.
812
+ sig do
813
+ returns(
814
+ T.nilable(
815
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
816
+ )
817
+ )
818
+ end
819
+ attr_reader :behavior
820
+
821
+ sig do
822
+ params(
823
+ behavior:
824
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
825
+ ).void
826
+ end
827
+ attr_writer :behavior
828
+
829
+ # Optional request deadline and behavior on timeout. For GET requests, use
830
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
831
+ # timeoutOpts object.
832
+ sig do
833
+ params(
834
+ milliseconds: Integer,
835
+ behavior:
836
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
837
+ ).returns(T.attached_class)
838
+ end
839
+ def self.new(
840
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
841
+ milliseconds:,
842
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
843
+ # credits. "return-partial" returns usable results collected so far; if none are
844
+ # available, the request still fails without charging credits. Partial results are
845
+ # not cached as complete results.
846
+ behavior: nil
847
+ )
848
+ end
849
+
850
+ sig do
851
+ override.returns(
852
+ {
853
+ milliseconds: Integer,
854
+ behavior:
855
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
856
+ }
857
+ )
858
+ end
859
+ def to_hash
860
+ end
861
+
862
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
863
+ # credits. "return-partial" returns usable results collected so far; if none are
864
+ # available, the request still fails without charging credits. Partial results are
865
+ # not cached as complete results.
866
+ module Behavior
867
+ extend ContextDev::Internal::Type::Enum
868
+
869
+ TaggedSymbol =
870
+ T.type_alias do
871
+ T.all(Symbol, ContextDev::WebSearchParams::TimeoutOpts::Behavior)
872
+ end
873
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
874
+
875
+ FAIL =
876
+ T.let(
877
+ :fail,
878
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::TaggedSymbol
879
+ )
880
+ RETURN_PARTIAL =
881
+ T.let(
882
+ :"return-partial",
883
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::TaggedSymbol
884
+ )
885
+
886
+ sig do
887
+ override.returns(
888
+ T::Array[
889
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::TaggedSymbol
890
+ ]
891
+ )
892
+ end
893
+ def self.values
894
+ end
895
+ end
669
896
  end
670
897
  end
671
898
  end
@@ -51,6 +51,15 @@ module ContextDev
51
51
  end
52
52
  attr_writer :key_metadata
53
53
 
54
+ # True when timeoutOpts.behavior=return-partial returned the usable results
55
+ # collected before the deadline. Partial collections are not cached as complete
56
+ # results.
57
+ sig { returns(T.nilable(T::Boolean)) }
58
+ attr_reader :partial
59
+
60
+ sig { params(partial: T::Boolean).void }
61
+ attr_writer :partial
62
+
54
63
  sig do
55
64
  params(
56
65
  cache_metadata:
@@ -60,7 +69,8 @@ module ContextDev
60
69
  results:
61
70
  T::Array[ContextDev::Models::WebSearchResponse::Result::OrHash],
62
71
  key_metadata:
63
- ContextDev::Models::WebSearchResponse::KeyMetadata::OrHash
72
+ ContextDev::Models::WebSearchResponse::KeyMetadata::OrHash,
73
+ partial: T::Boolean
64
74
  ).returns(T.attached_class)
65
75
  end
66
76
  def self.new(
@@ -75,7 +85,11 @@ module ContextDev
75
85
  request_id:,
76
86
  results:,
77
87
  # Credit usage, included whenever a valid API key is provided.
78
- key_metadata: nil
88
+ key_metadata: nil,
89
+ # True when timeoutOpts.behavior=return-partial returned the usable results
90
+ # collected before the deadline. Partial collections are not cached as complete
91
+ # results.
92
+ partial: nil
79
93
  )
80
94
  end
81
95
 
@@ -87,7 +101,8 @@ module ContextDev
87
101
  query: String,
88
102
  request_id: String,
89
103
  results: T::Array[ContextDev::Models::WebSearchResponse::Result],
90
- key_metadata: ContextDev::Models::WebSearchResponse::KeyMetadata
104
+ key_metadata: ContextDev::Models::WebSearchResponse::KeyMetadata,
105
+ partial: T::Boolean
91
106
  }
92
107
  )
93
108
  end
@@ -198,7 +213,8 @@ module ContextDev
198
213
  )
199
214
  end
200
215
 
201
- # Snippet excerpt from the page.
216
+ # Snippet excerpt from the page. Empty string when the search provider does not
217
+ # supply a snippet.
202
218
  sig { returns(String) }
203
219
  attr_accessor :description
204
220
 
@@ -242,7 +258,8 @@ module ContextDev
242
258
  ).returns(T.attached_class)
243
259
  end
244
260
  def self.new(
245
- # Snippet excerpt from the page.
261
+ # Snippet excerpt from the page. Empty string when the search provider does not
262
+ # supply a snippet.
246
263
  description:,
247
264
  # Markdown scrape status and content for this result.
248
265
  markdown:,
@@ -292,12 +309,36 @@ module ContextDev
292
309
  sig { returns(T.nilable(String)) }
293
310
  attr_accessor :markdown
294
311
 
312
+ # How complete the returned content is. `loaded` means the page finished the waits
313
+ # the request asked for. `still-loading` only occurs with
314
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
315
+ # reached first, so the content reflects the DOM at that moment and late-rendering
316
+ # parts may be missing. Partial results are billed at the base request cost.
317
+ sig do
318
+ returns(
319
+ T.nilable(
320
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::TaggedSymbol
321
+ )
322
+ )
323
+ end
324
+ attr_reader :final_dom_state
325
+
326
+ sig do
327
+ params(
328
+ final_dom_state:
329
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::OrSymbol
330
+ ).void
331
+ end
332
+ attr_writer :final_dom_state
333
+
295
334
  # Markdown scrape status and content for this result.
296
335
  sig do
297
336
  params(
298
337
  code:
299
338
  ContextDev::Models::WebSearchResponse::Result::Markdown::Code::OrSymbol,
300
- markdown: T.nilable(String)
339
+ markdown: T.nilable(String),
340
+ final_dom_state:
341
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::OrSymbol
301
342
  ).returns(T.attached_class)
302
343
  end
303
344
  def self.new(
@@ -305,7 +346,13 @@ module ContextDev
305
346
  code:,
306
347
  # GFM Markdown of the page. Null unless markdownOptions.enabled is true and
307
348
  # scraping succeeded.
308
- markdown:
349
+ markdown:,
350
+ # How complete the returned content is. `loaded` means the page finished the waits
351
+ # the request asked for. `still-loading` only occurs with
352
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
353
+ # reached first, so the content reflects the DOM at that moment and late-rendering
354
+ # parts may be missing. Partial results are billed at the base request cost.
355
+ final_dom_state: nil
309
356
  )
310
357
  end
311
358
 
@@ -314,7 +361,9 @@ module ContextDev
314
361
  {
315
362
  code:
316
363
  ContextDev::Models::WebSearchResponse::Result::Markdown::Code::TaggedSymbol,
317
- markdown: T.nilable(String)
364
+ markdown: T.nilable(String),
365
+ final_dom_state:
366
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::TaggedSymbol
318
367
  }
319
368
  )
320
369
  end
@@ -375,6 +424,45 @@ module ContextDev
375
424
  def self.values
376
425
  end
377
426
  end
427
+
428
+ # How complete the returned content is. `loaded` means the page finished the waits
429
+ # the request asked for. `still-loading` only occurs with
430
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
431
+ # reached first, so the content reflects the DOM at that moment and late-rendering
432
+ # parts may be missing. Partial results are billed at the base request cost.
433
+ module FinalDomState
434
+ extend ContextDev::Internal::Type::Enum
435
+
436
+ TaggedSymbol =
437
+ T.type_alias do
438
+ T.all(
439
+ Symbol,
440
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState
441
+ )
442
+ end
443
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
444
+
445
+ LOADED =
446
+ T.let(
447
+ :loaded,
448
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::TaggedSymbol
449
+ )
450
+ STILL_LOADING =
451
+ T.let(
452
+ :"still-loading",
453
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::TaggedSymbol
454
+ )
455
+
456
+ sig do
457
+ override.returns(
458
+ T::Array[
459
+ ContextDev::Models::WebSearchResponse::Result::Markdown::FinalDomState::TaggedSymbol
460
+ ]
461
+ )
462
+ end
463
+ def self.values
464
+ end
465
+ end
378
466
  end
379
467
 
380
468
  # Relevance to the original query.
@@ -141,14 +141,18 @@ module ContextDev
141
141
  sig { params(tags: T::Array[String]).void }
142
142
  attr_writer :tags
143
143
 
144
- # Optional timeout in milliseconds for the request. If the request takes longer
145
- # than this value, it will be aborted with a 408 status code. Maximum allowed
146
- # value is 300000ms (5 minutes).
147
- sig { returns(T.nilable(Integer)) }
148
- attr_reader :timeout_ms
144
+ # Optional request deadline and behavior on timeout. For GET requests, use
145
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
146
+ # timeoutOpts object.
147
+ sig { returns(T.nilable(ContextDev::WebWebCrawlMdParams::TimeoutOpts)) }
148
+ attr_reader :timeout_opts
149
149
 
150
- sig { params(timeout_ms: Integer).void }
151
- attr_writer :timeout_ms
150
+ sig do
151
+ params(
152
+ timeout_opts: ContextDev::WebWebCrawlMdParams::TimeoutOpts::OrHash
153
+ ).void
154
+ end
155
+ attr_writer :timeout_opts
152
156
 
153
157
  # Regex pattern. Only URLs matching this pattern will be followed and scraped. An
154
158
  # automatic prefix scope in the form ^<starting URL> follows a redirect of the
@@ -203,7 +207,7 @@ module ContextDev
203
207
  shorten_base64_images: T::Boolean,
204
208
  stop_after_ms: Integer,
205
209
  tags: T::Array[String],
206
- timeout_ms: Integer,
210
+ timeout_opts: ContextDev::WebWebCrawlMdParams::TimeoutOpts::OrHash,
207
211
  url_regex: String,
208
212
  use_main_content_only: T::Boolean,
209
213
  wait_for_ms: Integer,
@@ -261,10 +265,10 @@ module ContextDev
261
265
  stop_after_ms: nil,
262
266
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
263
267
  tags: nil,
264
- # Optional timeout in milliseconds for the request. If the request takes longer
265
- # than this value, it will be aborted with a 408 status code. Maximum allowed
266
- # value is 300000ms (5 minutes).
267
- timeout_ms: nil,
268
+ # Optional request deadline and behavior on timeout. For GET requests, use
269
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
270
+ # timeoutOpts object.
271
+ timeout_opts: nil,
268
272
  # Regex pattern. Only URLs matching this pattern will be followed and scraped. An
269
273
  # automatic prefix scope in the form ^<starting URL> follows a redirect of the
270
274
  # starting page.
@@ -303,7 +307,7 @@ module ContextDev
303
307
  shorten_base64_images: T::Boolean,
304
308
  stop_after_ms: Integer,
305
309
  tags: T::Array[String],
306
- timeout_ms: Integer,
310
+ timeout_opts: ContextDev::WebWebCrawlMdParams::TimeoutOpts,
307
311
  url_regex: String,
308
312
  use_main_content_only: T::Boolean,
309
313
  wait_for_ms: Integer,
@@ -623,6 +627,112 @@ module ContextDev
623
627
  end
624
628
  end
625
629
 
630
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
631
+ OrHash =
632
+ T.type_alias do
633
+ T.any(
634
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts,
635
+ ContextDev::Internal::AnyHash
636
+ )
637
+ end
638
+
639
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
640
+ sig { returns(Integer) }
641
+ attr_accessor :milliseconds
642
+
643
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
644
+ # credits. "return-partial" returns usable results collected so far; if none are
645
+ # available, the request still fails without charging credits. Partial results are
646
+ # not cached as complete results.
647
+ sig do
648
+ returns(
649
+ T.nilable(
650
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::OrSymbol
651
+ )
652
+ )
653
+ end
654
+ attr_reader :behavior
655
+
656
+ sig do
657
+ params(
658
+ behavior:
659
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::OrSymbol
660
+ ).void
661
+ end
662
+ attr_writer :behavior
663
+
664
+ # Optional request deadline and behavior on timeout. For GET requests, use
665
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
666
+ # timeoutOpts object.
667
+ sig do
668
+ params(
669
+ milliseconds: Integer,
670
+ behavior:
671
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::OrSymbol
672
+ ).returns(T.attached_class)
673
+ end
674
+ def self.new(
675
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
676
+ milliseconds:,
677
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
678
+ # credits. "return-partial" returns usable results collected so far; if none are
679
+ # available, the request still fails without charging credits. Partial results are
680
+ # not cached as complete results.
681
+ behavior: nil
682
+ )
683
+ end
684
+
685
+ sig do
686
+ override.returns(
687
+ {
688
+ milliseconds: Integer,
689
+ behavior:
690
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::OrSymbol
691
+ }
692
+ )
693
+ end
694
+ def to_hash
695
+ end
696
+
697
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
698
+ # credits. "return-partial" returns usable results collected so far; if none are
699
+ # available, the request still fails without charging credits. Partial results are
700
+ # not cached as complete results.
701
+ module Behavior
702
+ extend ContextDev::Internal::Type::Enum
703
+
704
+ TaggedSymbol =
705
+ T.type_alias do
706
+ T.all(
707
+ Symbol,
708
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior
709
+ )
710
+ end
711
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
712
+
713
+ FAIL =
714
+ T.let(
715
+ :fail,
716
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::TaggedSymbol
717
+ )
718
+ RETURN_PARTIAL =
719
+ T.let(
720
+ :"return-partial",
721
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::TaggedSymbol
722
+ )
723
+
724
+ sig do
725
+ override.returns(
726
+ T::Array[
727
+ ContextDev::WebWebCrawlMdParams::TimeoutOpts::Behavior::TaggedSymbol
728
+ ]
729
+ )
730
+ end
731
+ def self.values
732
+ end
733
+ end
734
+ end
735
+
626
736
  # Set to enabled to bypass shared caches and omit request and response content
627
737
  # from retained usage logs. Requires zero data retention to be enabled for your
628
738
  # organization (contact support@context.dev), otherwise the request fails with