context.dev 2.6.0 → 2.8.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/lib/context_dev/models/batch_cancel_response.rb +70 -183
  5. data/lib/context_dev/models/batch_list_response.rb +86 -95
  6. data/lib/context_dev/models/batch_retrieve_response.rb +86 -103
  7. data/lib/context_dev/models/brand_search_params.rb +36 -0
  8. data/lib/context_dev/models/brand_search_response.rb +84 -0
  9. data/lib/context_dev/models/crawl_controls.rb +126 -0
  10. data/lib/context_dev/models/failure.rb +27 -0
  11. data/lib/context_dev/models/intake.rb +62 -0
  12. data/lib/context_dev/models/{error_count.rb → page_error_count.rb} +1 -1
  13. data/lib/context_dev/models/web_screenshot_params.rb +5 -7
  14. data/lib/context_dev/models/web_web_crawl_md_params.rb +5 -7
  15. data/lib/context_dev/models/web_web_scrape_html_params.rb +5 -7
  16. data/lib/context_dev/models/web_web_scrape_md_params.rb +5 -7
  17. data/lib/context_dev/models.rb +8 -2
  18. data/lib/context_dev/resources/batch.rb +3 -6
  19. data/lib/context_dev/resources/brand.rb +34 -0
  20. data/lib/context_dev/resources/web.rb +4 -4
  21. data/lib/context_dev/version.rb +1 -1
  22. data/lib/context_dev.rb +6 -2
  23. data/rbi/context_dev/models/batch_cancel_response.rbi +98 -316
  24. data/rbi/context_dev/models/batch_list_response.rbi +127 -152
  25. data/rbi/context_dev/models/batch_retrieve_response.rbi +126 -161
  26. data/rbi/context_dev/models/brand_search_params.rbi +60 -0
  27. data/rbi/context_dev/models/brand_search_response.rbi +146 -0
  28. data/rbi/context_dev/models/crawl_controls.rbi +252 -0
  29. data/rbi/context_dev/models/{error.rbi → failure.rbi} +10 -7
  30. data/rbi/context_dev/models/intake.rbi +88 -0
  31. data/rbi/context_dev/models/{error_count.rbi → page_error_count.rbi} +2 -2
  32. data/rbi/context_dev/models/web_screenshot_params.rbi +6 -9
  33. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +6 -9
  34. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +6 -9
  35. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +6 -9
  36. data/rbi/context_dev/models.rbi +8 -2
  37. data/rbi/context_dev/resources/batch.rbi +3 -6
  38. data/rbi/context_dev/resources/brand.rbi +26 -0
  39. data/rbi/context_dev/resources/web.rbi +8 -12
  40. data/sig/context_dev/models/batch_cancel_response.rbs +32 -124
  41. data/sig/context_dev/models/batch_list_response.rbs +42 -63
  42. data/sig/context_dev/models/batch_retrieve_response.rbs +42 -70
  43. data/sig/context_dev/models/brand_search_params.rbs +30 -0
  44. data/sig/context_dev/models/brand_search_response.rbs +62 -0
  45. data/sig/context_dev/models/crawl_controls.rbs +114 -0
  46. data/sig/context_dev/models/{error.rbs → failure.rbs} +2 -2
  47. data/sig/context_dev/models/intake.rbs +40 -0
  48. data/sig/context_dev/models/{error_count.rbs → page_error_count.rbs} +2 -2
  49. data/sig/context_dev/models.rbs +8 -2
  50. data/sig/context_dev/resources/brand.rbs +6 -0
  51. metadata +20 -8
  52. data/lib/context_dev/models/error.rb +0 -26
@@ -100,7 +100,15 @@ module ContextDev
100
100
  sig { returns(String) }
101
101
  attr_accessor :id
102
102
 
103
- # Reserved and used credits.
103
+ # The crawl controls as submitted, so the limits requested can be compared against
104
+ # what the crawl reached.
105
+ sig { returns(T.nilable(ContextDev::CrawlControls)) }
106
+ attr_reader :crawl
107
+
108
+ sig { params(crawl: T.nilable(ContextDev::CrawlControls::OrHash)).void }
109
+ attr_writer :crawl
110
+
111
+ # What this batch has done to your credit balance.
104
112
  sig { returns(ContextDev::Models::BatchListResponse::Data::Credits) }
105
113
  attr_reader :credits
106
114
 
@@ -112,29 +120,31 @@ module ContextDev
112
120
  end
113
121
  attr_writer :credits
114
122
 
115
- # Why the batch failed.
116
- sig { returns(T.nilable(ContextDev::Error)) }
117
- attr_reader :error
123
+ # A failure of the batch as a whole, distinct from the per-page failures in
124
+ # `page_errors`.
125
+ sig { returns(T.nilable(ContextDev::Failure)) }
126
+ attr_reader :failure
118
127
 
119
- sig { params(error: T.nilable(ContextDev::Error::OrHash)).void }
120
- attr_writer :error
128
+ sig { params(failure: T.nilable(ContextDev::Failure::OrHash)).void }
129
+ attr_writer :failure
121
130
 
122
- # Page failures grouped by error code.
123
- sig { returns(T::Array[ContextDev::ErrorCount]) }
124
- attr_accessor :errors
131
+ # What each page is returned as. Matches `input.data.format` on the submit
132
+ # request.
133
+ sig do
134
+ returns(
135
+ ContextDev::Models::BatchListResponse::Data::Format::TaggedSymbol
136
+ )
137
+ end
138
+ attr_accessor :format_
125
139
 
126
- # Submission counts.
127
- sig { returns(ContextDev::Models::BatchListResponse::Data::Input) }
140
+ # What submission took in, and what it charged for.
141
+ sig { returns(ContextDev::Intake) }
128
142
  attr_reader :input
129
143
 
130
- sig do
131
- params(
132
- input: ContextDev::Models::BatchListResponse::Data::Input::OrHash
133
- ).void
134
- end
144
+ sig { params(input: ContextDev::Intake::OrHash).void }
135
145
  attr_writer :input
136
146
 
137
- # How pages are selected.
147
+ # How pages were selected. Matches `input.mode` on the submit request.
138
148
  sig do
139
149
  returns(
140
150
  ContextDev::Models::BatchListResponse::Data::Mode::TaggedSymbol
@@ -142,7 +152,12 @@ module ContextDev
142
152
  end
143
153
  attr_accessor :mode
144
154
 
145
- # Current processing counts. Use `status` to check completion.
155
+ # Individual page failures grouped by error code, sorted by count. Unrelated to
156
+ # `failure`, which is the batch itself failing.
157
+ sig { returns(T::Array[ContextDev::PageErrorCount]) }
158
+ attr_accessor :page_errors
159
+
160
+ # Pages attempted so far. Use `status` to check completion.
146
161
  sig { returns(ContextDev::Models::BatchListResponse::Data::Progress) }
147
162
  attr_reader :progress
148
163
 
@@ -154,8 +169,8 @@ module ContextDev
154
169
  end
155
170
  attr_writer :progress
156
171
 
157
- # Download links available when the batch finishes. GET /batch/{batch_id}/results
158
- # serves the same records as paginated JSON.
172
+ # Download links, available once the batch reaches a final status and null before
173
+ # then. GET /batch/{batch_id}/results serves the same records as paginated JSON.
159
174
  sig do
160
175
  returns(
161
176
  T.nilable(ContextDev::Models::BatchListResponse::Data::Results)
@@ -195,24 +210,19 @@ module ContextDev
195
210
  end
196
211
  attr_writer :timing
197
212
 
198
- # Output format.
199
- sig do
200
- returns(
201
- ContextDev::Models::BatchListResponse::Data::Type::TaggedSymbol
202
- )
203
- end
204
- attr_accessor :type
205
-
206
213
  # An asynchronous web scraping job.
207
214
  sig do
208
215
  params(
209
216
  id: String,
217
+ crawl: T.nilable(ContextDev::CrawlControls::OrHash),
210
218
  credits:
211
219
  ContextDev::Models::BatchListResponse::Data::Credits::OrHash,
212
- error: T.nilable(ContextDev::Error::OrHash),
213
- errors: T::Array[ContextDev::ErrorCount::OrHash],
214
- input: ContextDev::Models::BatchListResponse::Data::Input::OrHash,
220
+ failure: T.nilable(ContextDev::Failure::OrHash),
221
+ format_:
222
+ ContextDev::Models::BatchListResponse::Data::Format::OrSymbol,
223
+ input: ContextDev::Intake::OrHash,
215
224
  mode: ContextDev::Models::BatchListResponse::Data::Mode::OrSymbol,
225
+ page_errors: T::Array[ContextDev::PageErrorCount::OrHash],
216
226
  progress:
217
227
  ContextDev::Models::BatchListResponse::Data::Progress::OrHash,
218
228
  results:
@@ -222,35 +232,40 @@ module ContextDev
222
232
  status:
223
233
  ContextDev::Models::BatchListResponse::Data::Status::OrSymbol,
224
234
  tags: T::Array[String],
225
- timing: ContextDev::Models::BatchListResponse::Data::Timing::OrHash,
226
- type: ContextDev::Models::BatchListResponse::Data::Type::OrSymbol
235
+ timing: ContextDev::Models::BatchListResponse::Data::Timing::OrHash
227
236
  ).returns(T.attached_class)
228
237
  end
229
238
  def self.new(
230
239
  # Batch ID used to retrieve or cancel the job.
231
240
  id:,
232
- # Reserved and used credits.
241
+ # The crawl controls as submitted, so the limits requested can be compared against
242
+ # what the crawl reached.
243
+ crawl:,
244
+ # What this batch has done to your credit balance.
233
245
  credits:,
234
- # Why the batch failed.
235
- error:,
236
- # Page failures grouped by error code.
237
- errors:,
238
- # Submission counts.
246
+ # A failure of the batch as a whole, distinct from the per-page failures in
247
+ # `page_errors`.
248
+ failure:,
249
+ # What each page is returned as. Matches `input.data.format` on the submit
250
+ # request.
251
+ format_:,
252
+ # What submission took in, and what it charged for.
239
253
  input:,
240
- # How pages are selected.
254
+ # How pages were selected. Matches `input.mode` on the submit request.
241
255
  mode:,
242
- # Current processing counts. Use `status` to check completion.
256
+ # Individual page failures grouped by error code, sorted by count. Unrelated to
257
+ # `failure`, which is the batch itself failing.
258
+ page_errors:,
259
+ # Pages attempted so far. Use `status` to check completion.
243
260
  progress:,
244
- # Download links available when the batch finishes. GET /batch/{batch_id}/results
245
- # serves the same records as paginated JSON.
261
+ # Download links, available once the batch reaches a final status and null before
262
+ # then. GET /batch/{batch_id}/results serves the same records as paginated JSON.
246
263
  results:,
247
264
  # Current state. `completed`, `cancelled`, and `failed` are final.
248
265
  status:,
249
266
  # Tags stored on the batch at submission.
250
267
  tags:,
251
- timing:,
252
- # Output format.
253
- type:
268
+ timing:
254
269
  )
255
270
  end
256
271
 
@@ -258,21 +273,22 @@ module ContextDev
258
273
  override.returns(
259
274
  {
260
275
  id: String,
276
+ crawl: T.nilable(ContextDev::CrawlControls),
261
277
  credits: ContextDev::Models::BatchListResponse::Data::Credits,
262
- error: T.nilable(ContextDev::Error),
263
- errors: T::Array[ContextDev::ErrorCount],
264
- input: ContextDev::Models::BatchListResponse::Data::Input,
278
+ failure: T.nilable(ContextDev::Failure),
279
+ format_:
280
+ ContextDev::Models::BatchListResponse::Data::Format::TaggedSymbol,
281
+ input: ContextDev::Intake,
265
282
  mode:
266
283
  ContextDev::Models::BatchListResponse::Data::Mode::TaggedSymbol,
284
+ page_errors: T::Array[ContextDev::PageErrorCount],
267
285
  progress: ContextDev::Models::BatchListResponse::Data::Progress,
268
286
  results:
269
287
  T.nilable(ContextDev::Models::BatchListResponse::Data::Results),
270
288
  status:
271
289
  ContextDev::Models::BatchListResponse::Data::Status::TaggedSymbol,
272
290
  tags: T::Array[String],
273
- timing: ContextDev::Models::BatchListResponse::Data::Timing,
274
- type:
275
- ContextDev::Models::BatchListResponse::Data::Type::TaggedSymbol
291
+ timing: ContextDev::Models::BatchListResponse::Data::Timing
276
292
  }
277
293
  )
278
294
  end
@@ -288,94 +304,83 @@ module ContextDev
288
304
  )
289
305
  end
290
306
 
291
- # Credits used by successful pages.
307
+ # `reserved` minus `refunded` — what the batch has cost so far. Equal to
308
+ # `reserved` until the batch settles.
292
309
  sig { returns(Integer) }
293
- attr_accessor :charged
310
+ attr_accessor :net
294
311
 
295
- # Credits reserved when the batch was accepted.
312
+ # Credits returned for pages that did not succeed. Stays 0 until the batch reaches
313
+ # a final status, then settles in one movement.
296
314
  sig { returns(Integer) }
297
- attr_accessor :estimated
315
+ attr_accessor :refunded
298
316
 
299
- # Reserved and used credits.
317
+ # Credits debited from your balance the moment the batch was accepted. This is a
318
+ # charge, not a forecast — the whole amount leaves the balance up front.
319
+ sig { returns(Integer) }
320
+ attr_accessor :reserved
321
+
322
+ # What this batch has done to your credit balance.
300
323
  sig do
301
- params(charged: Integer, estimated: Integer).returns(
324
+ params(net: Integer, refunded: Integer, reserved: Integer).returns(
302
325
  T.attached_class
303
326
  )
304
327
  end
305
328
  def self.new(
306
- # Credits used by successful pages.
307
- charged:,
308
- # Credits reserved when the batch was accepted.
309
- estimated:
329
+ # `reserved` minus `refunded` — what the batch has cost so far. Equal to
330
+ # `reserved` until the batch settles.
331
+ net:,
332
+ # Credits returned for pages that did not succeed. Stays 0 until the batch reaches
333
+ # a final status, then settles in one movement.
334
+ refunded:,
335
+ # Credits debited from your balance the moment the batch was accepted. This is a
336
+ # charge, not a forecast — the whole amount leaves the balance up front.
337
+ reserved:
310
338
  )
311
339
  end
312
340
 
313
- sig { override.returns({ charged: Integer, estimated: Integer }) }
341
+ sig do
342
+ override.returns(
343
+ { net: Integer, refunded: Integer, reserved: Integer }
344
+ )
345
+ end
314
346
  def to_hash
315
347
  end
316
348
  end
317
349
 
318
- class Input < ContextDev::Internal::Type::BaseModel
319
- OrHash =
350
+ # What each page is returned as. Matches `input.data.format` on the submit
351
+ # request.
352
+ module Format
353
+ extend ContextDev::Internal::Type::Enum
354
+
355
+ TaggedSymbol =
320
356
  T.type_alias do
321
- T.any(
322
- ContextDev::Models::BatchListResponse::Data::Input,
323
- ContextDev::Internal::AnyHash
324
- )
357
+ T.all(Symbol, ContextDev::Models::BatchListResponse::Data::Format)
325
358
  end
359
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
326
360
 
327
- # Pages accepted, or the crawl page limit. Credits are reserved for this count.
328
- sig { returns(Integer) }
329
- attr_accessor :accepted
330
-
331
- # Duplicate URL and `itemId` pairs skipped. Always 0 for crawls.
332
- sig { returns(Integer) }
333
- attr_accessor :duplicates
334
-
335
- # Pages rejected during validation.
336
- sig { returns(Integer) }
337
- attr_accessor :invalid
338
-
339
- # Pages submitted before validation. For a crawl, the page limit.
340
- sig { returns(Integer) }
341
- attr_accessor :submitted
342
-
343
- # Submission counts.
344
- sig do
345
- params(
346
- accepted: Integer,
347
- duplicates: Integer,
348
- invalid: Integer,
349
- submitted: Integer
350
- ).returns(T.attached_class)
351
- end
352
- def self.new(
353
- # Pages accepted, or the crawl page limit. Credits are reserved for this count.
354
- accepted:,
355
- # Duplicate URL and `itemId` pairs skipped. Always 0 for crawls.
356
- duplicates:,
357
- # Pages rejected during validation.
358
- invalid:,
359
- # Pages submitted before validation. For a crawl, the page limit.
360
- submitted:
361
- )
362
- end
361
+ MARKDOWN =
362
+ T.let(
363
+ :markdown,
364
+ ContextDev::Models::BatchListResponse::Data::Format::TaggedSymbol
365
+ )
366
+ HTML =
367
+ T.let(
368
+ :html,
369
+ ContextDev::Models::BatchListResponse::Data::Format::TaggedSymbol
370
+ )
363
371
 
364
372
  sig do
365
373
  override.returns(
366
- {
367
- accepted: Integer,
368
- duplicates: Integer,
369
- invalid: Integer,
370
- submitted: Integer
371
- }
374
+ T::Array[
375
+ ContextDev::Models::BatchListResponse::Data::Format::TaggedSymbol
376
+ ]
372
377
  )
373
378
  end
374
- def to_hash
379
+ def self.values
375
380
  end
376
381
  end
377
382
 
378
- # How pages are selected.
383
+ # How pages were selected. Matches `input.mode` on the submit request.
379
384
  module Mode
380
385
  extend ContextDev::Internal::Type::Enum
381
386
 
@@ -420,8 +425,9 @@ module ContextDev
420
425
  sig { returns(Integer) }
421
426
  attr_accessor :failed
422
427
 
423
- # Accepted pages not yet attempted. Always 0 once the batch completes; a crawl can
424
- # finish under its page limit when the site has no more reachable pages.
428
+ # Reserved pages not yet attempted. A cancelled batch keeps reporting the URLs it
429
+ # never reached; a crawl whose `input.reserved_is_ceiling` is true reports 0 once
430
+ # final, because its unspent budget was never real pages.
425
431
  sig { returns(Integer) }
426
432
  attr_accessor :pending
427
433
 
@@ -429,7 +435,7 @@ module ContextDev
429
435
  sig { returns(Integer) }
430
436
  attr_accessor :succeeded
431
437
 
432
- # Current processing counts. Use `status` to check completion.
438
+ # Pages attempted so far. Use `status` to check completion.
433
439
  sig do
434
440
  params(
435
441
  failed: Integer,
@@ -440,8 +446,9 @@ module ContextDev
440
446
  def self.new(
441
447
  # Pages that could not be scraped.
442
448
  failed:,
443
- # Accepted pages not yet attempted. Always 0 once the batch completes; a crawl can
444
- # finish under its page limit when the site has no more reachable pages.
449
+ # Reserved pages not yet attempted. A cancelled batch keeps reporting the URLs it
450
+ # never reached; a crawl whose `input.reserved_is_ceiling` is true reports 0 once
451
+ # final, because its unspent budget was never real pages.
445
452
  pending:,
446
453
  # Pages scraped successfully.
447
454
  succeeded:
@@ -480,8 +487,8 @@ module ContextDev
480
487
  end
481
488
  attr_accessor :files
482
489
 
483
- # Download links available when the batch finishes. GET /batch/{batch_id}/results
484
- # serves the same records as paginated JSON.
490
+ # Download links, available once the batch reaches a final status and null before
491
+ # then. GET /batch/{batch_id}/results serves the same records as paginated JSON.
485
492
  sig do
486
493
  params(
487
494
  expires_at: String,
@@ -659,38 +666,6 @@ module ContextDev
659
666
  def to_hash
660
667
  end
661
668
  end
662
-
663
- # Output format.
664
- module Type
665
- extend ContextDev::Internal::Type::Enum
666
-
667
- TaggedSymbol =
668
- T.type_alias do
669
- T.all(Symbol, ContextDev::Models::BatchListResponse::Data::Type)
670
- end
671
- OrSymbol = T.type_alias { T.any(Symbol, String) }
672
-
673
- MARKDOWN =
674
- T.let(
675
- :markdown,
676
- ContextDev::Models::BatchListResponse::Data::Type::TaggedSymbol
677
- )
678
- HTML =
679
- T.let(
680
- :html,
681
- ContextDev::Models::BatchListResponse::Data::Type::TaggedSymbol
682
- )
683
-
684
- sig do
685
- override.returns(
686
- T::Array[
687
- ContextDev::Models::BatchListResponse::Data::Type::TaggedSymbol
688
- ]
689
- )
690
- end
691
- def self.values
692
- end
693
- end
694
669
  end
695
670
 
696
671
  class KeyMetadata < ContextDev::Internal::Type::BaseModel