context.dev 2.6.0 → 2.7.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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -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/crawl_controls.rb +126 -0
  8. data/lib/context_dev/models/failure.rb +27 -0
  9. data/lib/context_dev/models/intake.rb +62 -0
  10. data/lib/context_dev/models/{error_count.rb → page_error_count.rb} +1 -1
  11. data/lib/context_dev/models/web_screenshot_params.rb +5 -7
  12. data/lib/context_dev/models/web_web_crawl_md_params.rb +5 -7
  13. data/lib/context_dev/models/web_web_scrape_html_params.rb +5 -7
  14. data/lib/context_dev/models/web_web_scrape_md_params.rb +5 -7
  15. data/lib/context_dev/models.rb +6 -2
  16. data/lib/context_dev/resources/batch.rb +3 -6
  17. data/lib/context_dev/resources/web.rb +4 -4
  18. data/lib/context_dev/version.rb +1 -1
  19. data/lib/context_dev.rb +4 -2
  20. data/rbi/context_dev/models/batch_cancel_response.rbi +98 -316
  21. data/rbi/context_dev/models/batch_list_response.rbi +127 -152
  22. data/rbi/context_dev/models/batch_retrieve_response.rbi +126 -161
  23. data/rbi/context_dev/models/crawl_controls.rbi +252 -0
  24. data/rbi/context_dev/models/{error.rbi → failure.rbi} +10 -7
  25. data/rbi/context_dev/models/intake.rbi +88 -0
  26. data/rbi/context_dev/models/{error_count.rbi → page_error_count.rbi} +2 -2
  27. data/rbi/context_dev/models/web_screenshot_params.rbi +6 -9
  28. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +6 -9
  29. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +6 -9
  30. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +6 -9
  31. data/rbi/context_dev/models.rbi +6 -2
  32. data/rbi/context_dev/resources/batch.rbi +3 -6
  33. data/rbi/context_dev/resources/web.rbi +8 -12
  34. data/sig/context_dev/models/batch_cancel_response.rbs +32 -124
  35. data/sig/context_dev/models/batch_list_response.rbs +42 -63
  36. data/sig/context_dev/models/batch_retrieve_response.rbs +42 -70
  37. data/sig/context_dev/models/crawl_controls.rbs +114 -0
  38. data/sig/context_dev/models/{error.rbs → failure.rbs} +2 -2
  39. data/sig/context_dev/models/intake.rbs +40 -0
  40. data/sig/context_dev/models/{error_count.rbs → page_error_count.rbs} +2 -2
  41. data/sig/context_dev/models.rbs +6 -2
  42. metadata +14 -8
  43. data/lib/context_dev/models/error.rb +0 -26
@@ -15,7 +15,15 @@ module ContextDev
15
15
  sig { returns(String) }
16
16
  attr_accessor :id
17
17
 
18
- # Reserved and used credits.
18
+ # The crawl controls as submitted, so the limits requested can be compared against
19
+ # what the crawl reached.
20
+ sig { returns(T.nilable(ContextDev::CrawlControls)) }
21
+ attr_reader :crawl
22
+
23
+ sig { params(crawl: T.nilable(ContextDev::CrawlControls::OrHash)).void }
24
+ attr_writer :crawl
25
+
26
+ # What this batch has done to your credit balance.
19
27
  sig { returns(ContextDev::Models::BatchRetrieveResponse::Credits) }
20
28
  attr_reader :credits
21
29
 
@@ -26,26 +34,26 @@ module ContextDev
26
34
  end
27
35
  attr_writer :credits
28
36
 
29
- # Why the batch failed.
30
- sig { returns(T.nilable(ContextDev::Error)) }
31
- attr_reader :error
37
+ # A failure of the batch as a whole, distinct from the per-page failures in
38
+ # `page_errors`.
39
+ sig { returns(T.nilable(ContextDev::Failure)) }
40
+ attr_reader :failure
32
41
 
33
- sig { params(error: T.nilable(ContextDev::Error::OrHash)).void }
34
- attr_writer :error
42
+ sig { params(failure: T.nilable(ContextDev::Failure::OrHash)).void }
43
+ attr_writer :failure
35
44
 
36
- # Page failures grouped by error code.
37
- sig { returns(T::Array[ContextDev::ErrorCount]) }
38
- attr_accessor :errors
45
+ # What each page is returned as. Matches `input.data.format` on the submit
46
+ # request.
47
+ sig do
48
+ returns(ContextDev::Models::BatchRetrieveResponse::Format::TaggedSymbol)
49
+ end
50
+ attr_accessor :format_
39
51
 
40
- # Submission counts.
41
- sig { returns(ContextDev::Models::BatchRetrieveResponse::Input) }
52
+ # What submission took in, and what it charged for.
53
+ sig { returns(ContextDev::Intake) }
42
54
  attr_reader :input
43
55
 
44
- sig do
45
- params(
46
- input: ContextDev::Models::BatchRetrieveResponse::Input::OrHash
47
- ).void
48
- end
56
+ sig { params(input: ContextDev::Intake::OrHash).void }
49
57
  attr_writer :input
50
58
 
51
59
  # Rejected URLs, up to 100. These are not charged.
@@ -54,13 +62,18 @@ module ContextDev
54
62
  end
55
63
  attr_accessor :invalid_urls
56
64
 
57
- # How pages are selected.
65
+ # How pages were selected. Matches `input.mode` on the submit request.
58
66
  sig do
59
67
  returns(ContextDev::Models::BatchRetrieveResponse::Mode::TaggedSymbol)
60
68
  end
61
69
  attr_accessor :mode
62
70
 
63
- # Current processing counts. Use `status` to check completion.
71
+ # Individual page failures grouped by error code, sorted by count. Unrelated to
72
+ # `failure`, which is the batch itself failing.
73
+ sig { returns(T::Array[ContextDev::PageErrorCount]) }
74
+ attr_accessor :page_errors
75
+
76
+ # Pages attempted so far. Use `status` to check completion.
64
77
  sig { returns(ContextDev::Models::BatchRetrieveResponse::Progress) }
65
78
  attr_reader :progress
66
79
 
@@ -71,8 +84,8 @@ module ContextDev
71
84
  end
72
85
  attr_writer :progress
73
86
 
74
- # Download links available when the batch finishes. GET /batch/{batch_id}/results
75
- # serves the same records as paginated JSON.
87
+ # Download links, available once the batch reaches a final status and null before
88
+ # then. GET /batch/{batch_id}/results serves the same records as paginated JSON.
76
89
  sig do
77
90
  returns(T.nilable(ContextDev::Models::BatchRetrieveResponse::Results))
78
91
  end
@@ -108,12 +121,6 @@ module ContextDev
108
121
  end
109
122
  attr_writer :timing
110
123
 
111
- # Output format.
112
- sig do
113
- returns(ContextDev::Models::BatchRetrieveResponse::Type::TaggedSymbol)
114
- end
115
- attr_accessor :type
116
-
117
124
  # API key usage for this request.
118
125
  sig do
119
126
  returns(
@@ -130,25 +137,20 @@ module ContextDev
130
137
  end
131
138
  attr_writer :key_metadata
132
139
 
133
- # Webhook signing secret. Also returned by GET /batch/{batch_id}.
134
- sig { returns(T.nilable(String)) }
135
- attr_reader :webhook_secret
136
-
137
- sig { params(webhook_secret: String).void }
138
- attr_writer :webhook_secret
139
-
140
140
  sig do
141
141
  params(
142
142
  id: String,
143
+ crawl: T.nilable(ContextDev::CrawlControls::OrHash),
143
144
  credits: ContextDev::Models::BatchRetrieveResponse::Credits::OrHash,
144
- error: T.nilable(ContextDev::Error::OrHash),
145
- errors: T::Array[ContextDev::ErrorCount::OrHash],
146
- input: ContextDev::Models::BatchRetrieveResponse::Input::OrHash,
145
+ failure: T.nilable(ContextDev::Failure::OrHash),
146
+ format_: ContextDev::Models::BatchRetrieveResponse::Format::OrSymbol,
147
+ input: ContextDev::Intake::OrHash,
147
148
  invalid_urls:
148
149
  T::Array[
149
150
  ContextDev::Models::BatchRetrieveResponse::InvalidURL::OrHash
150
151
  ],
151
152
  mode: ContextDev::Models::BatchRetrieveResponse::Mode::OrSymbol,
153
+ page_errors: T::Array[ContextDev::PageErrorCount::OrHash],
152
154
  progress: ContextDev::Models::BatchRetrieveResponse::Progress::OrHash,
153
155
  results:
154
156
  T.nilable(
@@ -157,43 +159,45 @@ module ContextDev
157
159
  status: ContextDev::Models::BatchRetrieveResponse::Status::OrSymbol,
158
160
  tags: T::Array[String],
159
161
  timing: ContextDev::Models::BatchRetrieveResponse::Timing::OrHash,
160
- type: ContextDev::Models::BatchRetrieveResponse::Type::OrSymbol,
161
162
  key_metadata:
162
- ContextDev::Models::BatchRetrieveResponse::KeyMetadata::OrHash,
163
- webhook_secret: String
163
+ ContextDev::Models::BatchRetrieveResponse::KeyMetadata::OrHash
164
164
  ).returns(T.attached_class)
165
165
  end
166
166
  def self.new(
167
167
  # Batch ID used to retrieve or cancel the job.
168
168
  id:,
169
- # Reserved and used credits.
169
+ # The crawl controls as submitted, so the limits requested can be compared against
170
+ # what the crawl reached.
171
+ crawl:,
172
+ # What this batch has done to your credit balance.
170
173
  credits:,
171
- # Why the batch failed.
172
- error:,
173
- # Page failures grouped by error code.
174
- errors:,
175
- # Submission counts.
174
+ # A failure of the batch as a whole, distinct from the per-page failures in
175
+ # `page_errors`.
176
+ failure:,
177
+ # What each page is returned as. Matches `input.data.format` on the submit
178
+ # request.
179
+ format_:,
180
+ # What submission took in, and what it charged for.
176
181
  input:,
177
182
  # Rejected URLs, up to 100. These are not charged.
178
183
  invalid_urls:,
179
- # How pages are selected.
184
+ # How pages were selected. Matches `input.mode` on the submit request.
180
185
  mode:,
181
- # Current processing counts. Use `status` to check completion.
186
+ # Individual page failures grouped by error code, sorted by count. Unrelated to
187
+ # `failure`, which is the batch itself failing.
188
+ page_errors:,
189
+ # Pages attempted so far. Use `status` to check completion.
182
190
  progress:,
183
- # Download links available when the batch finishes. GET /batch/{batch_id}/results
184
- # serves the same records as paginated JSON.
191
+ # Download links, available once the batch reaches a final status and null before
192
+ # then. GET /batch/{batch_id}/results serves the same records as paginated JSON.
185
193
  results:,
186
194
  # Current state. `completed`, `cancelled`, and `failed` are final.
187
195
  status:,
188
196
  # Tags stored on the batch at submission.
189
197
  tags:,
190
198
  timing:,
191
- # Output format.
192
- type:,
193
199
  # API key usage for this request.
194
- key_metadata: nil,
195
- # Webhook signing secret. Also returned by GET /batch/{batch_id}.
196
- webhook_secret: nil
200
+ key_metadata: nil
197
201
  )
198
202
  end
199
203
 
@@ -201,13 +205,16 @@ module ContextDev
201
205
  override.returns(
202
206
  {
203
207
  id: String,
208
+ crawl: T.nilable(ContextDev::CrawlControls),
204
209
  credits: ContextDev::Models::BatchRetrieveResponse::Credits,
205
- error: T.nilable(ContextDev::Error),
206
- errors: T::Array[ContextDev::ErrorCount],
207
- input: ContextDev::Models::BatchRetrieveResponse::Input,
210
+ failure: T.nilable(ContextDev::Failure),
211
+ format_:
212
+ ContextDev::Models::BatchRetrieveResponse::Format::TaggedSymbol,
213
+ input: ContextDev::Intake,
208
214
  invalid_urls:
209
215
  T::Array[ContextDev::Models::BatchRetrieveResponse::InvalidURL],
210
216
  mode: ContextDev::Models::BatchRetrieveResponse::Mode::TaggedSymbol,
217
+ page_errors: T::Array[ContextDev::PageErrorCount],
211
218
  progress: ContextDev::Models::BatchRetrieveResponse::Progress,
212
219
  results:
213
220
  T.nilable(ContextDev::Models::BatchRetrieveResponse::Results),
@@ -215,10 +222,7 @@ module ContextDev
215
222
  ContextDev::Models::BatchRetrieveResponse::Status::TaggedSymbol,
216
223
  tags: T::Array[String],
217
224
  timing: ContextDev::Models::BatchRetrieveResponse::Timing,
218
- type: ContextDev::Models::BatchRetrieveResponse::Type::TaggedSymbol,
219
- key_metadata:
220
- ContextDev::Models::BatchRetrieveResponse::KeyMetadata,
221
- webhook_secret: String
225
+ key_metadata: ContextDev::Models::BatchRetrieveResponse::KeyMetadata
222
226
  }
223
227
  )
224
228
  end
@@ -234,88 +238,79 @@ module ContextDev
234
238
  )
235
239
  end
236
240
 
237
- # Credits used by successful pages.
241
+ # `reserved` minus `refunded` — what the batch has cost so far. Equal to
242
+ # `reserved` until the batch settles.
238
243
  sig { returns(Integer) }
239
- attr_accessor :charged
244
+ attr_accessor :net
240
245
 
241
- # Credits reserved when the batch was accepted.
246
+ # Credits returned for pages that did not succeed. Stays 0 until the batch reaches
247
+ # a final status, then settles in one movement.
242
248
  sig { returns(Integer) }
243
- attr_accessor :estimated
249
+ attr_accessor :refunded
244
250
 
245
- # Reserved and used credits.
251
+ # Credits debited from your balance the moment the batch was accepted. This is a
252
+ # charge, not a forecast — the whole amount leaves the balance up front.
253
+ sig { returns(Integer) }
254
+ attr_accessor :reserved
255
+
256
+ # What this batch has done to your credit balance.
246
257
  sig do
247
- params(charged: Integer, estimated: Integer).returns(T.attached_class)
258
+ params(net: Integer, refunded: Integer, reserved: Integer).returns(
259
+ T.attached_class
260
+ )
248
261
  end
249
262
  def self.new(
250
- # Credits used by successful pages.
251
- charged:,
252
- # Credits reserved when the batch was accepted.
253
- estimated:
263
+ # `reserved` minus `refunded` — what the batch has cost so far. Equal to
264
+ # `reserved` until the batch settles.
265
+ net:,
266
+ # Credits returned for pages that did not succeed. Stays 0 until the batch reaches
267
+ # a final status, then settles in one movement.
268
+ refunded:,
269
+ # Credits debited from your balance the moment the batch was accepted. This is a
270
+ # charge, not a forecast — the whole amount leaves the balance up front.
271
+ reserved:
254
272
  )
255
273
  end
256
274
 
257
- sig { override.returns({ charged: Integer, estimated: Integer }) }
275
+ sig do
276
+ override.returns(
277
+ { net: Integer, refunded: Integer, reserved: Integer }
278
+ )
279
+ end
258
280
  def to_hash
259
281
  end
260
282
  end
261
283
 
262
- class Input < ContextDev::Internal::Type::BaseModel
263
- OrHash =
284
+ # What each page is returned as. Matches `input.data.format` on the submit
285
+ # request.
286
+ module Format
287
+ extend ContextDev::Internal::Type::Enum
288
+
289
+ TaggedSymbol =
264
290
  T.type_alias do
265
- T.any(
266
- ContextDev::Models::BatchRetrieveResponse::Input,
267
- ContextDev::Internal::AnyHash
268
- )
291
+ T.all(Symbol, ContextDev::Models::BatchRetrieveResponse::Format)
269
292
  end
293
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
270
294
 
271
- # Pages accepted, or the crawl page limit. Credits are reserved for this count.
272
- sig { returns(Integer) }
273
- attr_accessor :accepted
274
-
275
- # Duplicate URL and `itemId` pairs skipped. Always 0 for crawls.
276
- sig { returns(Integer) }
277
- attr_accessor :duplicates
278
-
279
- # Pages rejected during validation.
280
- sig { returns(Integer) }
281
- attr_accessor :invalid
282
-
283
- # Pages submitted before validation. For a crawl, the page limit.
284
- sig { returns(Integer) }
285
- attr_accessor :submitted
286
-
287
- # Submission counts.
288
- sig do
289
- params(
290
- accepted: Integer,
291
- duplicates: Integer,
292
- invalid: Integer,
293
- submitted: Integer
294
- ).returns(T.attached_class)
295
- end
296
- def self.new(
297
- # Pages accepted, or the crawl page limit. Credits are reserved for this count.
298
- accepted:,
299
- # Duplicate URL and `itemId` pairs skipped. Always 0 for crawls.
300
- duplicates:,
301
- # Pages rejected during validation.
302
- invalid:,
303
- # Pages submitted before validation. For a crawl, the page limit.
304
- submitted:
305
- )
306
- end
295
+ MARKDOWN =
296
+ T.let(
297
+ :markdown,
298
+ ContextDev::Models::BatchRetrieveResponse::Format::TaggedSymbol
299
+ )
300
+ HTML =
301
+ T.let(
302
+ :html,
303
+ ContextDev::Models::BatchRetrieveResponse::Format::TaggedSymbol
304
+ )
307
305
 
308
306
  sig do
309
307
  override.returns(
310
- {
311
- accepted: Integer,
312
- duplicates: Integer,
313
- invalid: Integer,
314
- submitted: Integer
315
- }
308
+ T::Array[
309
+ ContextDev::Models::BatchRetrieveResponse::Format::TaggedSymbol
310
+ ]
316
311
  )
317
312
  end
318
- def to_hash
313
+ def self.values
319
314
  end
320
315
  end
321
316
 
@@ -350,7 +345,7 @@ module ContextDev
350
345
  end
351
346
  end
352
347
 
353
- # How pages are selected.
348
+ # How pages were selected. Matches `input.mode` on the submit request.
354
349
  module Mode
355
350
  extend ContextDev::Internal::Type::Enum
356
351
 
@@ -395,8 +390,9 @@ module ContextDev
395
390
  sig { returns(Integer) }
396
391
  attr_accessor :failed
397
392
 
398
- # Accepted pages not yet attempted. Always 0 once the batch completes; a crawl can
399
- # finish under its page limit when the site has no more reachable pages.
393
+ # Reserved pages not yet attempted. A cancelled batch keeps reporting the URLs it
394
+ # never reached; a crawl whose `input.reserved_is_ceiling` is true reports 0 once
395
+ # final, because its unspent budget was never real pages.
400
396
  sig { returns(Integer) }
401
397
  attr_accessor :pending
402
398
 
@@ -404,7 +400,7 @@ module ContextDev
404
400
  sig { returns(Integer) }
405
401
  attr_accessor :succeeded
406
402
 
407
- # Current processing counts. Use `status` to check completion.
403
+ # Pages attempted so far. Use `status` to check completion.
408
404
  sig do
409
405
  params(failed: Integer, pending: Integer, succeeded: Integer).returns(
410
406
  T.attached_class
@@ -413,8 +409,9 @@ module ContextDev
413
409
  def self.new(
414
410
  # Pages that could not be scraped.
415
411
  failed:,
416
- # Accepted pages not yet attempted. Always 0 once the batch completes; a crawl can
417
- # finish under its page limit when the site has no more reachable pages.
412
+ # Reserved pages not yet attempted. A cancelled batch keeps reporting the URLs it
413
+ # never reached; a crawl whose `input.reserved_is_ceiling` is true reports 0 once
414
+ # final, because its unspent budget was never real pages.
418
415
  pending:,
419
416
  # Pages scraped successfully.
420
417
  succeeded:
@@ -451,8 +448,8 @@ module ContextDev
451
448
  end
452
449
  attr_accessor :files
453
450
 
454
- # Download links available when the batch finishes. GET /batch/{batch_id}/results
455
- # serves the same records as paginated JSON.
451
+ # Download links, available once the batch reaches a final status and null before
452
+ # then. GET /batch/{batch_id}/results serves the same records as paginated JSON.
456
453
  sig do
457
454
  params(
458
455
  expires_at: String,
@@ -631,38 +628,6 @@ module ContextDev
631
628
  end
632
629
  end
633
630
 
634
- # Output format.
635
- module Type
636
- extend ContextDev::Internal::Type::Enum
637
-
638
- TaggedSymbol =
639
- T.type_alias do
640
- T.all(Symbol, ContextDev::Models::BatchRetrieveResponse::Type)
641
- end
642
- OrSymbol = T.type_alias { T.any(Symbol, String) }
643
-
644
- MARKDOWN =
645
- T.let(
646
- :markdown,
647
- ContextDev::Models::BatchRetrieveResponse::Type::TaggedSymbol
648
- )
649
- HTML =
650
- T.let(
651
- :html,
652
- ContextDev::Models::BatchRetrieveResponse::Type::TaggedSymbol
653
- )
654
-
655
- sig do
656
- override.returns(
657
- T::Array[
658
- ContextDev::Models::BatchRetrieveResponse::Type::TaggedSymbol
659
- ]
660
- )
661
- end
662
- def self.values
663
- end
664
- end
665
-
666
631
  class KeyMetadata < ContextDev::Internal::Type::BaseModel
667
632
  OrHash =
668
633
  T.type_alias do