context.dev 1.35.0 → 2.0.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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/README.md +24 -17
  4. data/lib/context_dev/client.rb +7 -0
  5. data/lib/context_dev/models/brand_retrieve_params.rb +1036 -174
  6. data/lib/context_dev/models/monitor_create_params.rb +361 -0
  7. data/lib/context_dev/models/monitor_create_response.rb +484 -0
  8. data/lib/context_dev/models/monitor_delete_params.rb +20 -0
  9. data/lib/context_dev/models/monitor_delete_response.rb +22 -0
  10. data/lib/context_dev/models/monitor_list_account_changes_params.rb +93 -0
  11. data/lib/context_dev/models/monitor_list_account_changes_response.rb +199 -0
  12. data/lib/context_dev/models/monitor_list_account_runs_params.rb +55 -0
  13. data/lib/context_dev/models/monitor_list_account_runs_response.rb +227 -0
  14. data/lib/context_dev/models/monitor_list_changes_params.rb +57 -0
  15. data/lib/context_dev/models/monitor_list_changes_response.rb +198 -0
  16. data/lib/context_dev/models/monitor_list_params.rb +161 -0
  17. data/lib/context_dev/models/monitor_list_response.rb +507 -0
  18. data/lib/context_dev/models/monitor_list_runs_params.rb +62 -0
  19. data/lib/context_dev/models/monitor_list_runs_response.rb +227 -0
  20. data/lib/context_dev/models/monitor_retrieve_change_params.rb +20 -0
  21. data/lib/context_dev/models/monitor_retrieve_change_response.rb +271 -0
  22. data/lib/context_dev/models/monitor_retrieve_params.rb +20 -0
  23. data/lib/context_dev/models/monitor_retrieve_response.rb +484 -0
  24. data/lib/context_dev/models/monitor_run_params.rb +20 -0
  25. data/lib/context_dev/models/monitor_run_response.rb +35 -0
  26. data/lib/context_dev/models/monitor_update_params.rb +368 -0
  27. data/lib/context_dev/models/monitor_update_response.rb +484 -0
  28. data/lib/context_dev/models/utility_prefetch_params.rb +70 -6
  29. data/lib/context_dev/models/utility_prefetch_response.rb +23 -1
  30. data/lib/context_dev/models/web_extract_response.rb +17 -1
  31. data/lib/context_dev/models/web_extract_styleguide_params.rb +22 -1
  32. data/lib/context_dev/models/web_screenshot_params.rb +245 -1
  33. data/lib/context_dev/models/web_search_params.rb +270 -3
  34. data/lib/context_dev/models/web_web_crawl_md_params.rb +236 -1
  35. data/lib/context_dev/models/web_web_scrape_html_params.rb +234 -1
  36. data/lib/context_dev/models/web_web_scrape_html_response.rb +10 -2
  37. data/lib/context_dev/models/web_web_scrape_images_params.rb +12 -1
  38. data/lib/context_dev/models/web_web_scrape_md_params.rb +234 -1
  39. data/lib/context_dev/models.rb +20 -12
  40. data/lib/context_dev/resources/ai.rb +0 -33
  41. data/lib/context_dev/resources/brand.rb +7 -204
  42. data/lib/context_dev/resources/monitors.rb +352 -0
  43. data/lib/context_dev/resources/utility.rb +9 -35
  44. data/lib/context_dev/resources/web.rb +36 -8
  45. data/lib/context_dev/version.rb +1 -1
  46. data/lib/context_dev.rb +23 -14
  47. data/rbi/context_dev/client.rbi +6 -0
  48. data/rbi/context_dev/models/brand_retrieve_params.rbi +3792 -679
  49. data/rbi/context_dev/models/monitor_create_params.rbi +640 -0
  50. data/rbi/context_dev/models/monitor_create_response.rbi +820 -0
  51. data/rbi/context_dev/models/monitor_delete_params.rbi +35 -0
  52. data/rbi/context_dev/models/monitor_delete_response.rbi +29 -0
  53. data/rbi/context_dev/models/monitor_list_account_changes_params.rbi +211 -0
  54. data/rbi/context_dev/models/monitor_list_account_changes_response.rbi +376 -0
  55. data/rbi/context_dev/models/monitor_list_account_runs_params.rbi +125 -0
  56. data/rbi/context_dev/models/monitor_list_account_runs_response.rbi +464 -0
  57. data/rbi/context_dev/models/monitor_list_changes_params.rbi +91 -0
  58. data/rbi/context_dev/models/monitor_list_changes_response.rbi +372 -0
  59. data/rbi/context_dev/models/monitor_list_params.rbi +332 -0
  60. data/rbi/context_dev/models/monitor_list_response.rbi +885 -0
  61. data/rbi/context_dev/models/monitor_list_runs_params.rbi +125 -0
  62. data/rbi/context_dev/models/monitor_list_runs_response.rbi +455 -0
  63. data/rbi/context_dev/models/monitor_retrieve_change_params.rbi +38 -0
  64. data/rbi/context_dev/models/monitor_retrieve_change_response.rbi +478 -0
  65. data/rbi/context_dev/models/monitor_retrieve_params.rbi +38 -0
  66. data/rbi/context_dev/models/monitor_retrieve_response.rbi +828 -0
  67. data/rbi/context_dev/models/monitor_run_params.rbi +35 -0
  68. data/rbi/context_dev/models/monitor_run_response.rbi +48 -0
  69. data/rbi/context_dev/models/monitor_update_params.rbi +680 -0
  70. data/rbi/context_dev/models/monitor_update_response.rbi +820 -0
  71. data/rbi/context_dev/models/utility_prefetch_params.rbi +129 -7
  72. data/rbi/context_dev/models/utility_prefetch_response.rbi +55 -3
  73. data/rbi/context_dev/models/web_extract_response.rbi +10 -0
  74. data/rbi/context_dev/models/web_extract_styleguide_params.rbi +59 -0
  75. data/rbi/context_dev/models/web_screenshot_params.rbi +295 -0
  76. data/rbi/context_dev/models/web_search_params.rbi +288 -2
  77. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +260 -0
  78. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +465 -0
  79. data/rbi/context_dev/models/web_web_scrape_html_response.rbi +29 -3
  80. data/rbi/context_dev/models/web_web_scrape_images_params.rbi +17 -0
  81. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +259 -0
  82. data/rbi/context_dev/models.rbi +23 -15
  83. data/rbi/context_dev/resources/ai.rbi +0 -28
  84. data/rbi/context_dev/resources/brand.rbi +13 -228
  85. data/rbi/context_dev/resources/monitors.rbi +286 -0
  86. data/rbi/context_dev/resources/utility.rbi +14 -29
  87. data/rbi/context_dev/resources/web.rbi +56 -1
  88. data/sig/context_dev/client.rbs +2 -0
  89. data/sig/context_dev/models/brand_retrieve_params.rbs +1560 -281
  90. data/sig/context_dev/models/monitor_create_params.rbs +311 -0
  91. data/sig/context_dev/models/monitor_create_response.rbs +369 -0
  92. data/sig/context_dev/models/monitor_delete_params.rbs +23 -0
  93. data/sig/context_dev/models/monitor_delete_response.rbs +15 -0
  94. data/sig/context_dev/models/monitor_list_account_changes_params.rbs +104 -0
  95. data/sig/context_dev/models/monitor_list_account_changes_response.rbs +176 -0
  96. data/sig/context_dev/models/monitor_list_account_runs_params.rbs +58 -0
  97. data/sig/context_dev/models/monitor_list_account_runs_response.rbs +184 -0
  98. data/sig/context_dev/models/monitor_list_changes_params.rbs +61 -0
  99. data/sig/context_dev/models/monitor_list_changes_response.rbs +176 -0
  100. data/sig/context_dev/models/monitor_list_params.rbs +160 -0
  101. data/sig/context_dev/models/monitor_list_response.rbs +396 -0
  102. data/sig/context_dev/models/monitor_list_runs_params.rbs +63 -0
  103. data/sig/context_dev/models/monitor_list_runs_response.rbs +184 -0
  104. data/sig/context_dev/models/monitor_retrieve_change_params.rbs +23 -0
  105. data/sig/context_dev/models/monitor_retrieve_change_response.rbs +228 -0
  106. data/sig/context_dev/models/monitor_retrieve_params.rbs +23 -0
  107. data/sig/context_dev/models/monitor_retrieve_response.rbs +369 -0
  108. data/sig/context_dev/models/monitor_run_params.rbs +23 -0
  109. data/sig/context_dev/models/monitor_run_response.rbs +18 -0
  110. data/sig/context_dev/models/monitor_update_params.rbs +331 -0
  111. data/sig/context_dev/models/monitor_update_response.rbs +369 -0
  112. data/sig/context_dev/models/utility_prefetch_params.rbs +52 -4
  113. data/sig/context_dev/models/utility_prefetch_response.rbs +22 -3
  114. data/sig/context_dev/models/web_extract_response.rbs +5 -0
  115. data/sig/context_dev/models/web_extract_styleguide_params.rbs +20 -0
  116. data/sig/context_dev/models/web_screenshot_params.rbs +446 -0
  117. data/sig/context_dev/models/web_search_params.rbs +503 -0
  118. data/sig/context_dev/models/web_web_crawl_md_params.rbs +433 -0
  119. data/sig/context_dev/models/web_web_scrape_html_params.rbs +433 -0
  120. data/sig/context_dev/models/web_web_scrape_html_response.rbs +8 -0
  121. data/sig/context_dev/models/web_web_scrape_images_params.rbs +7 -0
  122. data/sig/context_dev/models/web_web_scrape_md_params.rbs +433 -0
  123. data/sig/context_dev/models.rbs +20 -12
  124. data/sig/context_dev/resources/ai.rbs +0 -8
  125. data/sig/context_dev/resources/brand.rbs +1 -56
  126. data/sig/context_dev/resources/monitors.rbs +101 -0
  127. data/sig/context_dev/resources/utility.rbs +2 -7
  128. data/sig/context_dev/resources/web.rbs +12 -0
  129. metadata +71 -44
  130. data/lib/context_dev/models/ai_ai_query_params.rb +0 -235
  131. data/lib/context_dev/models/ai_ai_query_response.rb +0 -133
  132. data/lib/context_dev/models/brand_identify_from_transaction_params.rb +0 -474
  133. data/lib/context_dev/models/brand_identify_from_transaction_response.rb +0 -1074
  134. data/lib/context_dev/models/brand_retrieve_by_email_params.rb +0 -195
  135. data/lib/context_dev/models/brand_retrieve_by_email_response.rb +0 -1071
  136. data/lib/context_dev/models/brand_retrieve_by_isin_params.rb +0 -195
  137. data/lib/context_dev/models/brand_retrieve_by_isin_response.rb +0 -1070
  138. data/lib/context_dev/models/brand_retrieve_by_name_params.rb +0 -452
  139. data/lib/context_dev/models/brand_retrieve_by_name_response.rb +0 -1070
  140. data/lib/context_dev/models/brand_retrieve_by_ticker_params.rb +0 -283
  141. data/lib/context_dev/models/brand_retrieve_by_ticker_response.rb +0 -1072
  142. data/lib/context_dev/models/utility_prefetch_by_email_params.rb +0 -37
  143. data/lib/context_dev/models/utility_prefetch_by_email_response.rb +0 -68
  144. data/rbi/context_dev/models/ai_ai_query_params.rbi +0 -504
  145. data/rbi/context_dev/models/ai_ai_query_response.rbi +0 -267
  146. data/rbi/context_dev/models/brand_identify_from_transaction_params.rbi +0 -2020
  147. data/rbi/context_dev/models/brand_identify_from_transaction_response.rbi +0 -3515
  148. data/rbi/context_dev/models/brand_retrieve_by_email_params.rbi +0 -743
  149. data/rbi/context_dev/models/brand_retrieve_by_email_response.rbi +0 -3511
  150. data/rbi/context_dev/models/brand_retrieve_by_isin_params.rbi +0 -743
  151. data/rbi/context_dev/models/brand_retrieve_by_isin_response.rbi +0 -3510
  152. data/rbi/context_dev/models/brand_retrieve_by_name_params.rbi +0 -1982
  153. data/rbi/context_dev/models/brand_retrieve_by_name_response.rbi +0 -3510
  154. data/rbi/context_dev/models/brand_retrieve_by_ticker_params.rbi +0 -1153
  155. data/rbi/context_dev/models/brand_retrieve_by_ticker_response.rbi +0 -3512
  156. data/rbi/context_dev/models/utility_prefetch_by_email_params.rbi +0 -65
  157. data/rbi/context_dev/models/utility_prefetch_by_email_response.rbi +0 -132
  158. data/sig/context_dev/models/ai_ai_query_params.rbs +0 -218
  159. data/sig/context_dev/models/ai_ai_query_response.rbs +0 -121
  160. data/sig/context_dev/models/brand_identify_from_transaction_params.rbs +0 -822
  161. data/sig/context_dev/models/brand_identify_from_transaction_response.rbs +0 -1441
  162. data/sig/context_dev/models/brand_retrieve_by_email_params.rbs +0 -305
  163. data/sig/context_dev/models/brand_retrieve_by_email_response.rbs +0 -1441
  164. data/sig/context_dev/models/brand_retrieve_by_isin_params.rbs +0 -305
  165. data/sig/context_dev/models/brand_retrieve_by_isin_response.rbs +0 -1441
  166. data/sig/context_dev/models/brand_retrieve_by_name_params.rbs +0 -801
  167. data/sig/context_dev/models/brand_retrieve_by_name_response.rbs +0 -1441
  168. data/sig/context_dev/models/brand_retrieve_by_ticker_params.rbs +0 -467
  169. data/sig/context_dev/models/brand_retrieve_by_ticker_response.rbs +0 -1441
  170. data/sig/context_dev/models/utility_prefetch_by_email_params.rbs +0 -30
  171. data/sig/context_dev/models/utility_prefetch_by_email_response.rbs +0 -64
@@ -0,0 +1,680 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class MonitorUpdateParams < ContextDev::Internal::Type::BaseModel
6
+ extend ContextDev::Internal::Type::RequestParameters::Converter
7
+ include ContextDev::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(ContextDev::MonitorUpdateParams, ContextDev::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :monitor_id
16
+
17
+ # Discriminated union describing how changes are detected.
18
+ sig do
19
+ returns(
20
+ T.nilable(
21
+ T.any(
22
+ ContextDev::MonitorUpdateParams::ChangeDetection::Exact,
23
+ ContextDev::MonitorUpdateParams::ChangeDetection::Semantic
24
+ )
25
+ )
26
+ )
27
+ end
28
+ attr_reader :change_detection
29
+
30
+ sig do
31
+ params(
32
+ change_detection:
33
+ T.any(
34
+ ContextDev::MonitorUpdateParams::ChangeDetection::Exact::OrHash,
35
+ ContextDev::MonitorUpdateParams::ChangeDetection::Semantic::OrHash
36
+ )
37
+ ).void
38
+ end
39
+ attr_writer :change_detection
40
+
41
+ sig { returns(T.nilable(String)) }
42
+ attr_reader :name
43
+
44
+ sig { params(name: String).void }
45
+ attr_writer :name
46
+
47
+ # Run the monitor on a fixed interval defined by a frequency and a unit, e.g.
48
+ # every 6 hours or every 2 days. The total interval (frequency × unit) must be
49
+ # between 10 minutes and 1 year.
50
+ sig { returns(T.nilable(ContextDev::MonitorUpdateParams::Schedule)) }
51
+ attr_reader :schedule
52
+
53
+ sig do
54
+ params(schedule: ContextDev::MonitorUpdateParams::Schedule::OrHash).void
55
+ end
56
+ attr_writer :schedule
57
+
58
+ sig do
59
+ returns(T.nilable(ContextDev::MonitorUpdateParams::Status::OrSymbol))
60
+ end
61
+ attr_reader :status
62
+
63
+ sig do
64
+ params(status: ContextDev::MonitorUpdateParams::Status::OrSymbol).void
65
+ end
66
+ attr_writer :status
67
+
68
+ # User-defined tags for grouping and filtering monitors and their changes.
69
+ sig { returns(T.nilable(T::Array[String])) }
70
+ attr_reader :tags
71
+
72
+ sig { params(tags: T::Array[String]).void }
73
+ attr_writer :tags
74
+
75
+ # Discriminated union describing what the monitor watches.
76
+ sig do
77
+ returns(
78
+ T.nilable(
79
+ T.any(
80
+ ContextDev::MonitorUpdateParams::Target::Page,
81
+ ContextDev::MonitorUpdateParams::Target::Sitemap,
82
+ ContextDev::MonitorUpdateParams::Target::Extract
83
+ )
84
+ )
85
+ )
86
+ end
87
+ attr_reader :target
88
+
89
+ sig do
90
+ params(
91
+ target:
92
+ T.any(
93
+ ContextDev::MonitorUpdateParams::Target::Page::OrHash,
94
+ ContextDev::MonitorUpdateParams::Target::Sitemap::OrHash,
95
+ ContextDev::MonitorUpdateParams::Target::Extract::OrHash
96
+ )
97
+ ).void
98
+ end
99
+ attr_writer :target
100
+
101
+ # Set to null to remove the webhook.
102
+ sig { returns(T.nilable(ContextDev::MonitorUpdateParams::Webhook)) }
103
+ attr_reader :webhook
104
+
105
+ sig do
106
+ params(
107
+ webhook: T.nilable(ContextDev::MonitorUpdateParams::Webhook::OrHash)
108
+ ).void
109
+ end
110
+ attr_writer :webhook
111
+
112
+ sig do
113
+ params(
114
+ monitor_id: String,
115
+ change_detection:
116
+ T.any(
117
+ ContextDev::MonitorUpdateParams::ChangeDetection::Exact::OrHash,
118
+ ContextDev::MonitorUpdateParams::ChangeDetection::Semantic::OrHash
119
+ ),
120
+ name: String,
121
+ schedule: ContextDev::MonitorUpdateParams::Schedule::OrHash,
122
+ status: ContextDev::MonitorUpdateParams::Status::OrSymbol,
123
+ tags: T::Array[String],
124
+ target:
125
+ T.any(
126
+ ContextDev::MonitorUpdateParams::Target::Page::OrHash,
127
+ ContextDev::MonitorUpdateParams::Target::Sitemap::OrHash,
128
+ ContextDev::MonitorUpdateParams::Target::Extract::OrHash
129
+ ),
130
+ webhook: T.nilable(ContextDev::MonitorUpdateParams::Webhook::OrHash),
131
+ request_options: ContextDev::RequestOptions::OrHash
132
+ ).returns(T.attached_class)
133
+ end
134
+ def self.new(
135
+ monitor_id:,
136
+ # Discriminated union describing how changes are detected.
137
+ change_detection: nil,
138
+ name: nil,
139
+ # Run the monitor on a fixed interval defined by a frequency and a unit, e.g.
140
+ # every 6 hours or every 2 days. The total interval (frequency × unit) must be
141
+ # between 10 minutes and 1 year.
142
+ schedule: nil,
143
+ status: nil,
144
+ # User-defined tags for grouping and filtering monitors and their changes.
145
+ tags: nil,
146
+ # Discriminated union describing what the monitor watches.
147
+ target: nil,
148
+ # Set to null to remove the webhook.
149
+ webhook: nil,
150
+ request_options: {}
151
+ )
152
+ end
153
+
154
+ sig do
155
+ override.returns(
156
+ {
157
+ monitor_id: String,
158
+ change_detection:
159
+ T.any(
160
+ ContextDev::MonitorUpdateParams::ChangeDetection::Exact,
161
+ ContextDev::MonitorUpdateParams::ChangeDetection::Semantic
162
+ ),
163
+ name: String,
164
+ schedule: ContextDev::MonitorUpdateParams::Schedule,
165
+ status: ContextDev::MonitorUpdateParams::Status::OrSymbol,
166
+ tags: T::Array[String],
167
+ target:
168
+ T.any(
169
+ ContextDev::MonitorUpdateParams::Target::Page,
170
+ ContextDev::MonitorUpdateParams::Target::Sitemap,
171
+ ContextDev::MonitorUpdateParams::Target::Extract
172
+ ),
173
+ webhook: T.nilable(ContextDev::MonitorUpdateParams::Webhook),
174
+ request_options: ContextDev::RequestOptions
175
+ }
176
+ )
177
+ end
178
+ def to_hash
179
+ end
180
+
181
+ # Discriminated union describing how changes are detected.
182
+ module ChangeDetection
183
+ extend ContextDev::Internal::Type::Union
184
+
185
+ Variants =
186
+ T.type_alias do
187
+ T.any(
188
+ ContextDev::MonitorUpdateParams::ChangeDetection::Exact,
189
+ ContextDev::MonitorUpdateParams::ChangeDetection::Semantic
190
+ )
191
+ end
192
+
193
+ class Exact < ContextDev::Internal::Type::BaseModel
194
+ OrHash =
195
+ T.type_alias do
196
+ T.any(
197
+ ContextDev::MonitorUpdateParams::ChangeDetection::Exact,
198
+ ContextDev::Internal::AnyHash
199
+ )
200
+ end
201
+
202
+ sig { returns(Symbol) }
203
+ attr_accessor :type
204
+
205
+ # Detect exact changes. For page targets, this means visible text diffs. For
206
+ # sitemap targets, this means URL additions and removals.
207
+ sig { params(type: Symbol).returns(T.attached_class) }
208
+ def self.new(type: :exact)
209
+ end
210
+
211
+ sig { override.returns({ type: Symbol }) }
212
+ def to_hash
213
+ end
214
+ end
215
+
216
+ class Semantic < ContextDev::Internal::Type::BaseModel
217
+ OrHash =
218
+ T.type_alias do
219
+ T.any(
220
+ ContextDev::MonitorUpdateParams::ChangeDetection::Semantic,
221
+ ContextDev::Internal::AnyHash
222
+ )
223
+ end
224
+
225
+ sig { returns(String) }
226
+ attr_accessor :query
227
+
228
+ sig { returns(Symbol) }
229
+ attr_accessor :type
230
+
231
+ sig { returns(T.nilable(Float)) }
232
+ attr_reader :confidence_threshold
233
+
234
+ sig { params(confidence_threshold: Float).void }
235
+ attr_writer :confidence_threshold
236
+
237
+ # Detect meaning-level changes that match a natural language query.
238
+ sig do
239
+ params(
240
+ query: String,
241
+ confidence_threshold: Float,
242
+ type: Symbol
243
+ ).returns(T.attached_class)
244
+ end
245
+ def self.new(query:, confidence_threshold: nil, type: :semantic)
246
+ end
247
+
248
+ sig do
249
+ override.returns(
250
+ { query: String, type: Symbol, confidence_threshold: Float }
251
+ )
252
+ end
253
+ def to_hash
254
+ end
255
+ end
256
+
257
+ sig do
258
+ override.returns(
259
+ T::Array[ContextDev::MonitorUpdateParams::ChangeDetection::Variants]
260
+ )
261
+ end
262
+ def self.variants
263
+ end
264
+ end
265
+
266
+ class Schedule < ContextDev::Internal::Type::BaseModel
267
+ OrHash =
268
+ T.type_alias do
269
+ T.any(
270
+ ContextDev::MonitorUpdateParams::Schedule,
271
+ ContextDev::Internal::AnyHash
272
+ )
273
+ end
274
+
275
+ # Number of units between runs. The resulting interval (frequency × unit) must be
276
+ # at least 10 minutes and at most 1 year (e.g. minimum 10 when unit is minutes;
277
+ # maximum 365 when unit is days).
278
+ sig { returns(Integer) }
279
+ attr_accessor :frequency
280
+
281
+ sig do
282
+ returns(ContextDev::MonitorUpdateParams::Schedule::Type::OrSymbol)
283
+ end
284
+ attr_accessor :type
285
+
286
+ sig do
287
+ returns(ContextDev::MonitorUpdateParams::Schedule::Unit::OrSymbol)
288
+ end
289
+ attr_accessor :unit
290
+
291
+ # Run the monitor on a fixed interval defined by a frequency and a unit, e.g.
292
+ # every 6 hours or every 2 days. The total interval (frequency × unit) must be
293
+ # between 10 minutes and 1 year.
294
+ sig do
295
+ params(
296
+ frequency: Integer,
297
+ type: ContextDev::MonitorUpdateParams::Schedule::Type::OrSymbol,
298
+ unit: ContextDev::MonitorUpdateParams::Schedule::Unit::OrSymbol
299
+ ).returns(T.attached_class)
300
+ end
301
+ def self.new(
302
+ # Number of units between runs. The resulting interval (frequency × unit) must be
303
+ # at least 10 minutes and at most 1 year (e.g. minimum 10 when unit is minutes;
304
+ # maximum 365 when unit is days).
305
+ frequency:,
306
+ type:,
307
+ unit:
308
+ )
309
+ end
310
+
311
+ sig do
312
+ override.returns(
313
+ {
314
+ frequency: Integer,
315
+ type: ContextDev::MonitorUpdateParams::Schedule::Type::OrSymbol,
316
+ unit: ContextDev::MonitorUpdateParams::Schedule::Unit::OrSymbol
317
+ }
318
+ )
319
+ end
320
+ def to_hash
321
+ end
322
+
323
+ module Type
324
+ extend ContextDev::Internal::Type::Enum
325
+
326
+ TaggedSymbol =
327
+ T.type_alias do
328
+ T.all(Symbol, ContextDev::MonitorUpdateParams::Schedule::Type)
329
+ end
330
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
331
+
332
+ INTERVAL =
333
+ T.let(
334
+ :interval,
335
+ ContextDev::MonitorUpdateParams::Schedule::Type::TaggedSymbol
336
+ )
337
+
338
+ sig do
339
+ override.returns(
340
+ T::Array[
341
+ ContextDev::MonitorUpdateParams::Schedule::Type::TaggedSymbol
342
+ ]
343
+ )
344
+ end
345
+ def self.values
346
+ end
347
+ end
348
+
349
+ module Unit
350
+ extend ContextDev::Internal::Type::Enum
351
+
352
+ TaggedSymbol =
353
+ T.type_alias do
354
+ T.all(Symbol, ContextDev::MonitorUpdateParams::Schedule::Unit)
355
+ end
356
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
357
+
358
+ MINUTES =
359
+ T.let(
360
+ :minutes,
361
+ ContextDev::MonitorUpdateParams::Schedule::Unit::TaggedSymbol
362
+ )
363
+ HOURS =
364
+ T.let(
365
+ :hours,
366
+ ContextDev::MonitorUpdateParams::Schedule::Unit::TaggedSymbol
367
+ )
368
+ DAYS =
369
+ T.let(
370
+ :days,
371
+ ContextDev::MonitorUpdateParams::Schedule::Unit::TaggedSymbol
372
+ )
373
+
374
+ sig do
375
+ override.returns(
376
+ T::Array[
377
+ ContextDev::MonitorUpdateParams::Schedule::Unit::TaggedSymbol
378
+ ]
379
+ )
380
+ end
381
+ def self.values
382
+ end
383
+ end
384
+ end
385
+
386
+ module Status
387
+ extend ContextDev::Internal::Type::Enum
388
+
389
+ TaggedSymbol =
390
+ T.type_alias do
391
+ T.all(Symbol, ContextDev::MonitorUpdateParams::Status)
392
+ end
393
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
394
+
395
+ ACTIVE =
396
+ T.let(:active, ContextDev::MonitorUpdateParams::Status::TaggedSymbol)
397
+ PAUSED =
398
+ T.let(:paused, ContextDev::MonitorUpdateParams::Status::TaggedSymbol)
399
+
400
+ sig do
401
+ override.returns(
402
+ T::Array[ContextDev::MonitorUpdateParams::Status::TaggedSymbol]
403
+ )
404
+ end
405
+ def self.values
406
+ end
407
+ end
408
+
409
+ # Discriminated union describing what the monitor watches.
410
+ module Target
411
+ extend ContextDev::Internal::Type::Union
412
+
413
+ Variants =
414
+ T.type_alias do
415
+ T.any(
416
+ ContextDev::MonitorUpdateParams::Target::Page,
417
+ ContextDev::MonitorUpdateParams::Target::Sitemap,
418
+ ContextDev::MonitorUpdateParams::Target::Extract
419
+ )
420
+ end
421
+
422
+ class Page < ContextDev::Internal::Type::BaseModel
423
+ OrHash =
424
+ T.type_alias do
425
+ T.any(
426
+ ContextDev::MonitorUpdateParams::Target::Page,
427
+ ContextDev::Internal::AnyHash
428
+ )
429
+ end
430
+
431
+ sig { returns(Symbol) }
432
+ attr_accessor :type
433
+
434
+ sig { returns(String) }
435
+ attr_accessor :url
436
+
437
+ # Normalize whitespace before comparing or analyzing text.
438
+ sig { returns(T.nilable(T::Boolean)) }
439
+ attr_reader :normalize_whitespace
440
+
441
+ sig { params(normalize_whitespace: T::Boolean).void }
442
+ attr_writer :normalize_whitespace
443
+
444
+ # Watch a single web page.
445
+ sig do
446
+ params(
447
+ url: String,
448
+ normalize_whitespace: T::Boolean,
449
+ type: Symbol
450
+ ).returns(T.attached_class)
451
+ end
452
+ def self.new(
453
+ url:,
454
+ # Normalize whitespace before comparing or analyzing text.
455
+ normalize_whitespace: nil,
456
+ type: :page
457
+ )
458
+ end
459
+
460
+ sig do
461
+ override.returns(
462
+ { type: Symbol, url: String, normalize_whitespace: T::Boolean }
463
+ )
464
+ end
465
+ def to_hash
466
+ end
467
+ end
468
+
469
+ class Sitemap < ContextDev::Internal::Type::BaseModel
470
+ OrHash =
471
+ T.type_alias do
472
+ T.any(
473
+ ContextDev::MonitorUpdateParams::Target::Sitemap,
474
+ ContextDev::Internal::AnyHash
475
+ )
476
+ end
477
+
478
+ sig { returns(Symbol) }
479
+ attr_accessor :type
480
+
481
+ # Sitemap URL to monitor.
482
+ sig { returns(String) }
483
+ attr_accessor :url
484
+
485
+ # URL path patterns to exclude.
486
+ sig { returns(T.nilable(T::Array[String])) }
487
+ attr_reader :exclude
488
+
489
+ sig { params(exclude: T::Array[String]).void }
490
+ attr_writer :exclude
491
+
492
+ # URL path patterns to include.
493
+ sig { returns(T.nilable(T::Array[String])) }
494
+ attr_reader :include
495
+
496
+ sig { params(include: T::Array[String]).void }
497
+ attr_writer :include
498
+
499
+ # Maximum number of sitemap URLs to track (capped at 10,000).
500
+ sig { returns(T.nilable(Integer)) }
501
+ attr_reader :max_urls
502
+
503
+ sig { params(max_urls: Integer).void }
504
+ attr_writer :max_urls
505
+
506
+ # Watch a sitemap for URL additions and removals. Crawled URLs are normalized
507
+ # (lowercased host, no trailing slash/fragment) and scoped to the monitored site
508
+ # and its subdomains before comparison. A new URL set must be observed on two
509
+ # consecutive runs before a change is reported, suppressing one-run crawl flaps.
510
+ sig do
511
+ params(
512
+ url: String,
513
+ exclude: T::Array[String],
514
+ include: T::Array[String],
515
+ max_urls: Integer,
516
+ type: Symbol
517
+ ).returns(T.attached_class)
518
+ end
519
+ def self.new(
520
+ # Sitemap URL to monitor.
521
+ url:,
522
+ # URL path patterns to exclude.
523
+ exclude: nil,
524
+ # URL path patterns to include.
525
+ include: nil,
526
+ # Maximum number of sitemap URLs to track (capped at 10,000).
527
+ max_urls: nil,
528
+ type: :sitemap
529
+ )
530
+ end
531
+
532
+ sig do
533
+ override.returns(
534
+ {
535
+ type: Symbol,
536
+ url: String,
537
+ exclude: T::Array[String],
538
+ include: T::Array[String],
539
+ max_urls: Integer
540
+ }
541
+ )
542
+ end
543
+ def to_hash
544
+ end
545
+ end
546
+
547
+ class Extract < ContextDev::Internal::Type::BaseModel
548
+ OrHash =
549
+ T.type_alias do
550
+ T.any(
551
+ ContextDev::MonitorUpdateParams::Target::Extract,
552
+ ContextDev::Internal::AnyHash
553
+ )
554
+ end
555
+
556
+ sig { returns(Symbol) }
557
+ attr_accessor :type
558
+
559
+ # Root URL to extract structured data from.
560
+ sig { returns(String) }
561
+ attr_accessor :url
562
+
563
+ sig { returns(T.nilable(T::Boolean)) }
564
+ attr_reader :follow_subdomains
565
+
566
+ sig { params(follow_subdomains: T::Boolean).void }
567
+ attr_writer :follow_subdomains
568
+
569
+ # Optional natural-language instructions guiding what to extract.
570
+ sig { returns(T.nilable(String)) }
571
+ attr_reader :instructions
572
+
573
+ sig { params(instructions: String).void }
574
+ attr_writer :instructions
575
+
576
+ # Optional maximum link depth from the starting URL (0 = only the starting page).
577
+ sig { returns(T.nilable(Integer)) }
578
+ attr_reader :max_depth
579
+
580
+ sig { params(max_depth: Integer).void }
581
+ attr_writer :max_depth
582
+
583
+ # Maximum number of pages to analyze during extraction.
584
+ sig { returns(T.nilable(Integer)) }
585
+ attr_reader :max_pages
586
+
587
+ sig { params(max_pages: Integer).void }
588
+ attr_writer :max_pages
589
+
590
+ # JSON Schema describing the structured data to extract and watch for changes. If
591
+ # omitted, a default summary + key-points schema is used.
592
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
593
+ attr_reader :schema
594
+
595
+ sig { params(schema: T::Hash[Symbol, T.anything]).void }
596
+ attr_writer :schema
597
+
598
+ # Watch a site's extracted structured data.
599
+ sig do
600
+ params(
601
+ url: String,
602
+ follow_subdomains: T::Boolean,
603
+ instructions: String,
604
+ max_depth: Integer,
605
+ max_pages: Integer,
606
+ schema: T::Hash[Symbol, T.anything],
607
+ type: Symbol
608
+ ).returns(T.attached_class)
609
+ end
610
+ def self.new(
611
+ # Root URL to extract structured data from.
612
+ url:,
613
+ follow_subdomains: nil,
614
+ # Optional natural-language instructions guiding what to extract.
615
+ instructions: nil,
616
+ # Optional maximum link depth from the starting URL (0 = only the starting page).
617
+ max_depth: nil,
618
+ # Maximum number of pages to analyze during extraction.
619
+ max_pages: nil,
620
+ # JSON Schema describing the structured data to extract and watch for changes. If
621
+ # omitted, a default summary + key-points schema is used.
622
+ schema: nil,
623
+ type: :extract
624
+ )
625
+ end
626
+
627
+ sig do
628
+ override.returns(
629
+ {
630
+ type: Symbol,
631
+ url: String,
632
+ follow_subdomains: T::Boolean,
633
+ instructions: String,
634
+ max_depth: Integer,
635
+ max_pages: Integer,
636
+ schema: T::Hash[Symbol, T.anything]
637
+ }
638
+ )
639
+ end
640
+ def to_hash
641
+ end
642
+ end
643
+
644
+ sig do
645
+ override.returns(
646
+ T::Array[ContextDev::MonitorUpdateParams::Target::Variants]
647
+ )
648
+ end
649
+ def self.variants
650
+ end
651
+ end
652
+
653
+ class Webhook < ContextDev::Internal::Type::BaseModel
654
+ OrHash =
655
+ T.type_alias do
656
+ T.any(
657
+ ContextDev::MonitorUpdateParams::Webhook,
658
+ ContextDev::Internal::AnyHash
659
+ )
660
+ end
661
+
662
+ # Webhook URL called when a change is detected.
663
+ sig { returns(String) }
664
+ attr_accessor :url
665
+
666
+ # Set to null to remove the webhook.
667
+ sig { params(url: String).returns(T.attached_class) }
668
+ def self.new(
669
+ # Webhook URL called when a change is detected.
670
+ url:
671
+ )
672
+ end
673
+
674
+ sig { override.returns({ url: String, secret: String }) }
675
+ def to_hash
676
+ end
677
+ end
678
+ end
679
+ end
680
+ end