seo 0.16.1 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1753,6 +1753,7 @@ export interface UrlInspectionRequest {
1753
1753
  accountEmail?: string;
1754
1754
  languageCode?: string;
1755
1755
  quotaLimit?: number;
1756
+ signal?: AbortSignal;
1756
1757
  }
1757
1758
  export interface UrlInspectionResult {
1758
1759
  inspectionResult?: {
@@ -2854,6 +2855,9 @@ export declare function normalizeCrawlSkipReasonCounts(input: {
2854
2855
  };
2855
2856
  export declare function crawlSkipReasonCountsFromRecord(input?: Partial<Record<CrawlSkipReason, number>>): CrawlSkipReasonCount[];
2856
2857
  type CrawlStatusPhase = 'started' | 'url_queued' | 'url_skipped' | 'page_started' | 'page_completed' | 'page_failed' | 'page_skipped' | 'external_links_started' | 'external_links_completed' | 'cancelled' | 'completed';
2858
+ export declare function fetchFailureKind(error: unknown, signal?: AbortSignal): Extract<CrawlRequestObservation, {
2859
+ outcome: 'failure';
2860
+ }>['failureKind'];
2857
2861
  export type CrawlOneResult = {
2858
2862
  request?: CrawlRequestObservation;
2859
2863
  page?: CrawlPageSnapshot;
@@ -2879,6 +2883,7 @@ type CrawlSiteChecks = {
2879
2883
  };
2880
2884
  };
2881
2885
  type CrawlAiAvailability = 'available' | 'absent' | 'access-blocked' | 'rate-limited' | 'unreachable';
2886
+ type CrawlFetchErrorKind = 'dns' | 'tls' | 'timeout' | 'redirect-limit' | 'too-large' | 'aborted' | 'unknown';
2882
2887
  type CrawlAiBotAccess = {
2883
2888
  userAgent: string;
2884
2889
  purpose: 'search' | 'training' | 'other';
@@ -2908,6 +2913,7 @@ type CrawlAiSignals = {
2908
2913
  contentType?: string;
2909
2914
  servesHtml?: boolean;
2910
2915
  error?: string;
2916
+ errorKind?: CrawlFetchErrorKind;
2911
2917
  sitemapUrls: string[];
2912
2918
  contentSignals?: string[];
2913
2919
  botAccess: CrawlAiBotAccess[];
@@ -2920,6 +2926,7 @@ type CrawlAiSignals = {
2920
2926
  contentType?: string;
2921
2927
  servesHtml?: boolean;
2922
2928
  error?: string;
2929
+ errorKind?: CrawlFetchErrorKind;
2923
2930
  links?: {
2924
2931
  found: number;
2925
2932
  checked: number;
@@ -3684,10 +3691,10 @@ export declare const crawlPageSnapshotSchema: z.ZodObject<{
3684
3691
  raw: z.ZodString;
3685
3692
  resolved: z.ZodOptional<z.ZodString>;
3686
3693
  ignoredReason: z.ZodOptional<z.ZodEnum<{
3687
- "invalid-url": "invalid-url";
3688
3694
  "outside-head": "outside-head";
3689
3695
  "alternate-qualifier": "alternate-qualifier";
3690
3696
  fragment: "fragment";
3697
+ "invalid-url": "invalid-url";
3691
3698
  "non-http-url": "non-http-url";
3692
3699
  }>>;
3693
3700
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -4321,17 +4328,17 @@ export declare const crawlReportSummarySchema: z.ZodObject<{
4321
4328
  skippedUrls: z.ZodNumber;
4322
4329
  skipReasons: z.ZodArray<z.ZodObject<{
4323
4330
  reason: z.ZodEnum<{
4331
+ "invalid-url": "invalid-url";
4332
+ "robots-disallowed": "robots-disallowed";
4333
+ "origin-backpressure": "origin-backpressure";
4324
4334
  "asset-url": "asset-url";
4325
4335
  "cdn-utility-url": "cdn-utility-url";
4326
4336
  "configured-exclusion": "configured-exclusion";
4327
4337
  "duplicate-normalization": "duplicate-normalization";
4328
- "invalid-url": "invalid-url";
4329
4338
  "memory-pressure": "memory-pressure";
4330
4339
  "off-origin": "off-origin";
4331
- "origin-backpressure": "origin-backpressure";
4332
4340
  "queue-safety-limit": "queue-safety-limit";
4333
4341
  "query-variant-limit": "query-variant-limit";
4334
- "robots-disallowed": "robots-disallowed";
4335
4342
  "robots-uncertain": "robots-uncertain";
4336
4343
  "legacy-unclassified": "legacy-unclassified";
4337
4344
  }>;
@@ -4489,17 +4496,17 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4489
4496
  skippedUrls: z.ZodNumber;
4490
4497
  skipReasons: z.ZodArray<z.ZodObject<{
4491
4498
  reason: z.ZodEnum<{
4499
+ "invalid-url": "invalid-url";
4500
+ "robots-disallowed": "robots-disallowed";
4501
+ "origin-backpressure": "origin-backpressure";
4492
4502
  "asset-url": "asset-url";
4493
4503
  "cdn-utility-url": "cdn-utility-url";
4494
4504
  "configured-exclusion": "configured-exclusion";
4495
4505
  "duplicate-normalization": "duplicate-normalization";
4496
- "invalid-url": "invalid-url";
4497
4506
  "memory-pressure": "memory-pressure";
4498
4507
  "off-origin": "off-origin";
4499
- "origin-backpressure": "origin-backpressure";
4500
4508
  "queue-safety-limit": "queue-safety-limit";
4501
4509
  "query-variant-limit": "query-variant-limit";
4502
- "robots-disallowed": "robots-disallowed";
4503
4510
  "robots-uncertain": "robots-uncertain";
4504
4511
  "legacy-unclassified": "legacy-unclassified";
4505
4512
  }>;
@@ -4872,10 +4879,10 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4872
4879
  raw: z.ZodString;
4873
4880
  resolved: z.ZodOptional<z.ZodString>;
4874
4881
  ignoredReason: z.ZodOptional<z.ZodEnum<{
4875
- "invalid-url": "invalid-url";
4876
4882
  "outside-head": "outside-head";
4877
4883
  "alternate-qualifier": "alternate-qualifier";
4878
4884
  fragment: "fragment";
4885
+ "invalid-url": "invalid-url";
4879
4886
  "non-http-url": "non-http-url";
4880
4887
  }>>;
4881
4888
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -5304,6 +5311,15 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5304
5311
  contentType: z.ZodOptional<z.ZodString>;
5305
5312
  servesHtml: z.ZodOptional<z.ZodBoolean>;
5306
5313
  error: z.ZodOptional<z.ZodString>;
5314
+ errorKind: z.ZodOptional<z.ZodEnum<{
5315
+ unknown: "unknown";
5316
+ timeout: "timeout";
5317
+ dns: "dns";
5318
+ tls: "tls";
5319
+ "redirect-limit": "redirect-limit";
5320
+ aborted: "aborted";
5321
+ "too-large": "too-large";
5322
+ }>>;
5307
5323
  sitemapUrls: z.ZodArray<z.ZodString>;
5308
5324
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
5309
5325
  botAccess: z.ZodArray<z.ZodObject<{
@@ -5332,6 +5348,15 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5332
5348
  contentType: z.ZodOptional<z.ZodString>;
5333
5349
  servesHtml: z.ZodOptional<z.ZodBoolean>;
5334
5350
  error: z.ZodOptional<z.ZodString>;
5351
+ errorKind: z.ZodOptional<z.ZodEnum<{
5352
+ unknown: "unknown";
5353
+ timeout: "timeout";
5354
+ dns: "dns";
5355
+ tls: "tls";
5356
+ "redirect-limit": "redirect-limit";
5357
+ aborted: "aborted";
5358
+ "too-large": "too-large";
5359
+ }>>;
5335
5360
  links: z.ZodOptional<z.ZodObject<{
5336
5361
  found: z.ZodNumber;
5337
5362
  checked: z.ZodNumber;
@@ -5807,17 +5832,17 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5807
5832
  skippedUrls: z.ZodNumber;
5808
5833
  skipReasons: z.ZodArray<z.ZodObject<{
5809
5834
  reason: z.ZodEnum<{
5835
+ "invalid-url": "invalid-url";
5836
+ "robots-disallowed": "robots-disallowed";
5837
+ "origin-backpressure": "origin-backpressure";
5810
5838
  "asset-url": "asset-url";
5811
5839
  "cdn-utility-url": "cdn-utility-url";
5812
5840
  "configured-exclusion": "configured-exclusion";
5813
5841
  "duplicate-normalization": "duplicate-normalization";
5814
- "invalid-url": "invalid-url";
5815
5842
  "memory-pressure": "memory-pressure";
5816
5843
  "off-origin": "off-origin";
5817
- "origin-backpressure": "origin-backpressure";
5818
5844
  "queue-safety-limit": "queue-safety-limit";
5819
5845
  "query-variant-limit": "query-variant-limit";
5820
- "robots-disallowed": "robots-disallowed";
5821
5846
  "robots-uncertain": "robots-uncertain";
5822
5847
  "legacy-unclassified": "legacy-unclassified";
5823
5848
  }>;
@@ -6190,10 +6215,10 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6190
6215
  raw: z.ZodString;
6191
6216
  resolved: z.ZodOptional<z.ZodString>;
6192
6217
  ignoredReason: z.ZodOptional<z.ZodEnum<{
6193
- "invalid-url": "invalid-url";
6194
6218
  "outside-head": "outside-head";
6195
6219
  "alternate-qualifier": "alternate-qualifier";
6196
6220
  fragment: "fragment";
6221
+ "invalid-url": "invalid-url";
6197
6222
  "non-http-url": "non-http-url";
6198
6223
  }>>;
6199
6224
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -6622,6 +6647,15 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6622
6647
  contentType: z.ZodOptional<z.ZodString>;
6623
6648
  servesHtml: z.ZodOptional<z.ZodBoolean>;
6624
6649
  error: z.ZodOptional<z.ZodString>;
6650
+ errorKind: z.ZodOptional<z.ZodEnum<{
6651
+ unknown: "unknown";
6652
+ timeout: "timeout";
6653
+ dns: "dns";
6654
+ tls: "tls";
6655
+ "redirect-limit": "redirect-limit";
6656
+ aborted: "aborted";
6657
+ "too-large": "too-large";
6658
+ }>>;
6625
6659
  sitemapUrls: z.ZodArray<z.ZodString>;
6626
6660
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
6627
6661
  botAccess: z.ZodArray<z.ZodObject<{
@@ -6650,6 +6684,15 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6650
6684
  contentType: z.ZodOptional<z.ZodString>;
6651
6685
  servesHtml: z.ZodOptional<z.ZodBoolean>;
6652
6686
  error: z.ZodOptional<z.ZodString>;
6687
+ errorKind: z.ZodOptional<z.ZodEnum<{
6688
+ unknown: "unknown";
6689
+ timeout: "timeout";
6690
+ dns: "dns";
6691
+ tls: "tls";
6692
+ "redirect-limit": "redirect-limit";
6693
+ aborted: "aborted";
6694
+ "too-large": "too-large";
6695
+ }>>;
6653
6696
  links: z.ZodOptional<z.ZodObject<{
6654
6697
  found: z.ZodNumber;
6655
6698
  checked: z.ZodNumber;
@@ -7125,17 +7168,17 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7125
7168
  skippedUrls: z.ZodNumber;
7126
7169
  skipReasons: z.ZodArray<z.ZodObject<{
7127
7170
  reason: z.ZodEnum<{
7171
+ "invalid-url": "invalid-url";
7172
+ "robots-disallowed": "robots-disallowed";
7173
+ "origin-backpressure": "origin-backpressure";
7128
7174
  "asset-url": "asset-url";
7129
7175
  "cdn-utility-url": "cdn-utility-url";
7130
7176
  "configured-exclusion": "configured-exclusion";
7131
7177
  "duplicate-normalization": "duplicate-normalization";
7132
- "invalid-url": "invalid-url";
7133
7178
  "memory-pressure": "memory-pressure";
7134
7179
  "off-origin": "off-origin";
7135
- "origin-backpressure": "origin-backpressure";
7136
7180
  "queue-safety-limit": "queue-safety-limit";
7137
7181
  "query-variant-limit": "query-variant-limit";
7138
- "robots-disallowed": "robots-disallowed";
7139
7182
  "robots-uncertain": "robots-uncertain";
7140
7183
  "legacy-unclassified": "legacy-unclassified";
7141
7184
  }>;
@@ -7508,10 +7551,10 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7508
7551
  raw: z.ZodString;
7509
7552
  resolved: z.ZodOptional<z.ZodString>;
7510
7553
  ignoredReason: z.ZodOptional<z.ZodEnum<{
7511
- "invalid-url": "invalid-url";
7512
7554
  "outside-head": "outside-head";
7513
7555
  "alternate-qualifier": "alternate-qualifier";
7514
7556
  fragment: "fragment";
7557
+ "invalid-url": "invalid-url";
7515
7558
  "non-http-url": "non-http-url";
7516
7559
  }>>;
7517
7560
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -7940,6 +7983,15 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7940
7983
  contentType: z.ZodOptional<z.ZodString>;
7941
7984
  servesHtml: z.ZodOptional<z.ZodBoolean>;
7942
7985
  error: z.ZodOptional<z.ZodString>;
7986
+ errorKind: z.ZodOptional<z.ZodEnum<{
7987
+ unknown: "unknown";
7988
+ timeout: "timeout";
7989
+ dns: "dns";
7990
+ tls: "tls";
7991
+ "redirect-limit": "redirect-limit";
7992
+ aborted: "aborted";
7993
+ "too-large": "too-large";
7994
+ }>>;
7943
7995
  sitemapUrls: z.ZodArray<z.ZodString>;
7944
7996
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
7945
7997
  botAccess: z.ZodArray<z.ZodObject<{
@@ -7968,6 +8020,15 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7968
8020
  contentType: z.ZodOptional<z.ZodString>;
7969
8021
  servesHtml: z.ZodOptional<z.ZodBoolean>;
7970
8022
  error: z.ZodOptional<z.ZodString>;
8023
+ errorKind: z.ZodOptional<z.ZodEnum<{
8024
+ unknown: "unknown";
8025
+ timeout: "timeout";
8026
+ dns: "dns";
8027
+ tls: "tls";
8028
+ "redirect-limit": "redirect-limit";
8029
+ aborted: "aborted";
8030
+ "too-large": "too-large";
8031
+ }>>;
7971
8032
  links: z.ZodOptional<z.ZodObject<{
7972
8033
  found: z.ZodNumber;
7973
8034
  checked: z.ZodNumber;
@@ -8445,17 +8506,17 @@ export declare const crawlerSchemas: {
8445
8506
  skippedUrls: z.ZodNumber;
8446
8507
  skipReasons: z.ZodArray<z.ZodObject<{
8447
8508
  reason: z.ZodEnum<{
8509
+ "invalid-url": "invalid-url";
8510
+ "robots-disallowed": "robots-disallowed";
8511
+ "origin-backpressure": "origin-backpressure";
8448
8512
  "asset-url": "asset-url";
8449
8513
  "cdn-utility-url": "cdn-utility-url";
8450
8514
  "configured-exclusion": "configured-exclusion";
8451
8515
  "duplicate-normalization": "duplicate-normalization";
8452
- "invalid-url": "invalid-url";
8453
8516
  "memory-pressure": "memory-pressure";
8454
8517
  "off-origin": "off-origin";
8455
- "origin-backpressure": "origin-backpressure";
8456
8518
  "queue-safety-limit": "queue-safety-limit";
8457
8519
  "query-variant-limit": "query-variant-limit";
8458
- "robots-disallowed": "robots-disallowed";
8459
8520
  "robots-uncertain": "robots-uncertain";
8460
8521
  "legacy-unclassified": "legacy-unclassified";
8461
8522
  }>;
@@ -8828,10 +8889,10 @@ export declare const crawlerSchemas: {
8828
8889
  raw: z.ZodString;
8829
8890
  resolved: z.ZodOptional<z.ZodString>;
8830
8891
  ignoredReason: z.ZodOptional<z.ZodEnum<{
8831
- "invalid-url": "invalid-url";
8832
8892
  "outside-head": "outside-head";
8833
8893
  "alternate-qualifier": "alternate-qualifier";
8834
8894
  fragment: "fragment";
8895
+ "invalid-url": "invalid-url";
8835
8896
  "non-http-url": "non-http-url";
8836
8897
  }>>;
8837
8898
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -9260,6 +9321,15 @@ export declare const crawlerSchemas: {
9260
9321
  contentType: z.ZodOptional<z.ZodString>;
9261
9322
  servesHtml: z.ZodOptional<z.ZodBoolean>;
9262
9323
  error: z.ZodOptional<z.ZodString>;
9324
+ errorKind: z.ZodOptional<z.ZodEnum<{
9325
+ unknown: "unknown";
9326
+ timeout: "timeout";
9327
+ dns: "dns";
9328
+ tls: "tls";
9329
+ "redirect-limit": "redirect-limit";
9330
+ aborted: "aborted";
9331
+ "too-large": "too-large";
9332
+ }>>;
9263
9333
  sitemapUrls: z.ZodArray<z.ZodString>;
9264
9334
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
9265
9335
  botAccess: z.ZodArray<z.ZodObject<{
@@ -9288,6 +9358,15 @@ export declare const crawlerSchemas: {
9288
9358
  contentType: z.ZodOptional<z.ZodString>;
9289
9359
  servesHtml: z.ZodOptional<z.ZodBoolean>;
9290
9360
  error: z.ZodOptional<z.ZodString>;
9361
+ errorKind: z.ZodOptional<z.ZodEnum<{
9362
+ unknown: "unknown";
9363
+ timeout: "timeout";
9364
+ dns: "dns";
9365
+ tls: "tls";
9366
+ "redirect-limit": "redirect-limit";
9367
+ aborted: "aborted";
9368
+ "too-large": "too-large";
9369
+ }>>;
9291
9370
  links: z.ZodOptional<z.ZodObject<{
9292
9371
  found: z.ZodNumber;
9293
9372
  checked: z.ZodNumber;
@@ -9763,17 +9842,17 @@ export declare const crawlerSchemas: {
9763
9842
  skippedUrls: z.ZodNumber;
9764
9843
  skipReasons: z.ZodArray<z.ZodObject<{
9765
9844
  reason: z.ZodEnum<{
9845
+ "invalid-url": "invalid-url";
9846
+ "robots-disallowed": "robots-disallowed";
9847
+ "origin-backpressure": "origin-backpressure";
9766
9848
  "asset-url": "asset-url";
9767
9849
  "cdn-utility-url": "cdn-utility-url";
9768
9850
  "configured-exclusion": "configured-exclusion";
9769
9851
  "duplicate-normalization": "duplicate-normalization";
9770
- "invalid-url": "invalid-url";
9771
9852
  "memory-pressure": "memory-pressure";
9772
9853
  "off-origin": "off-origin";
9773
- "origin-backpressure": "origin-backpressure";
9774
9854
  "queue-safety-limit": "queue-safety-limit";
9775
9855
  "query-variant-limit": "query-variant-limit";
9776
- "robots-disallowed": "robots-disallowed";
9777
9856
  "robots-uncertain": "robots-uncertain";
9778
9857
  "legacy-unclassified": "legacy-unclassified";
9779
9858
  }>;
@@ -10146,10 +10225,10 @@ export declare const crawlerSchemas: {
10146
10225
  raw: z.ZodString;
10147
10226
  resolved: z.ZodOptional<z.ZodString>;
10148
10227
  ignoredReason: z.ZodOptional<z.ZodEnum<{
10149
- "invalid-url": "invalid-url";
10150
10228
  "outside-head": "outside-head";
10151
10229
  "alternate-qualifier": "alternate-qualifier";
10152
10230
  fragment: "fragment";
10231
+ "invalid-url": "invalid-url";
10153
10232
  "non-http-url": "non-http-url";
10154
10233
  }>>;
10155
10234
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -10578,6 +10657,15 @@ export declare const crawlerSchemas: {
10578
10657
  contentType: z.ZodOptional<z.ZodString>;
10579
10658
  servesHtml: z.ZodOptional<z.ZodBoolean>;
10580
10659
  error: z.ZodOptional<z.ZodString>;
10660
+ errorKind: z.ZodOptional<z.ZodEnum<{
10661
+ unknown: "unknown";
10662
+ timeout: "timeout";
10663
+ dns: "dns";
10664
+ tls: "tls";
10665
+ "redirect-limit": "redirect-limit";
10666
+ aborted: "aborted";
10667
+ "too-large": "too-large";
10668
+ }>>;
10581
10669
  sitemapUrls: z.ZodArray<z.ZodString>;
10582
10670
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
10583
10671
  botAccess: z.ZodArray<z.ZodObject<{
@@ -10606,6 +10694,15 @@ export declare const crawlerSchemas: {
10606
10694
  contentType: z.ZodOptional<z.ZodString>;
10607
10695
  servesHtml: z.ZodOptional<z.ZodBoolean>;
10608
10696
  error: z.ZodOptional<z.ZodString>;
10697
+ errorKind: z.ZodOptional<z.ZodEnum<{
10698
+ unknown: "unknown";
10699
+ timeout: "timeout";
10700
+ dns: "dns";
10701
+ tls: "tls";
10702
+ "redirect-limit": "redirect-limit";
10703
+ aborted: "aborted";
10704
+ "too-large": "too-large";
10705
+ }>>;
10609
10706
  links: z.ZodOptional<z.ZodObject<{
10610
10707
  found: z.ZodNumber;
10611
10708
  checked: z.ZodNumber;
@@ -11081,17 +11178,17 @@ export declare const crawlerSchemas: {
11081
11178
  skippedUrls: z.ZodNumber;
11082
11179
  skipReasons: z.ZodArray<z.ZodObject<{
11083
11180
  reason: z.ZodEnum<{
11181
+ "invalid-url": "invalid-url";
11182
+ "robots-disallowed": "robots-disallowed";
11183
+ "origin-backpressure": "origin-backpressure";
11084
11184
  "asset-url": "asset-url";
11085
11185
  "cdn-utility-url": "cdn-utility-url";
11086
11186
  "configured-exclusion": "configured-exclusion";
11087
11187
  "duplicate-normalization": "duplicate-normalization";
11088
- "invalid-url": "invalid-url";
11089
11188
  "memory-pressure": "memory-pressure";
11090
11189
  "off-origin": "off-origin";
11091
- "origin-backpressure": "origin-backpressure";
11092
11190
  "queue-safety-limit": "queue-safety-limit";
11093
11191
  "query-variant-limit": "query-variant-limit";
11094
- "robots-disallowed": "robots-disallowed";
11095
11192
  "robots-uncertain": "robots-uncertain";
11096
11193
  "legacy-unclassified": "legacy-unclassified";
11097
11194
  }>;
@@ -11464,10 +11561,10 @@ export declare const crawlerSchemas: {
11464
11561
  raw: z.ZodString;
11465
11562
  resolved: z.ZodOptional<z.ZodString>;
11466
11563
  ignoredReason: z.ZodOptional<z.ZodEnum<{
11467
- "invalid-url": "invalid-url";
11468
11564
  "outside-head": "outside-head";
11469
11565
  "alternate-qualifier": "alternate-qualifier";
11470
11566
  fragment: "fragment";
11567
+ "invalid-url": "invalid-url";
11471
11568
  "non-http-url": "non-http-url";
11472
11569
  }>>;
11473
11570
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -11896,6 +11993,15 @@ export declare const crawlerSchemas: {
11896
11993
  contentType: z.ZodOptional<z.ZodString>;
11897
11994
  servesHtml: z.ZodOptional<z.ZodBoolean>;
11898
11995
  error: z.ZodOptional<z.ZodString>;
11996
+ errorKind: z.ZodOptional<z.ZodEnum<{
11997
+ unknown: "unknown";
11998
+ timeout: "timeout";
11999
+ dns: "dns";
12000
+ tls: "tls";
12001
+ "redirect-limit": "redirect-limit";
12002
+ aborted: "aborted";
12003
+ "too-large": "too-large";
12004
+ }>>;
11899
12005
  sitemapUrls: z.ZodArray<z.ZodString>;
11900
12006
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
11901
12007
  botAccess: z.ZodArray<z.ZodObject<{
@@ -11924,6 +12030,15 @@ export declare const crawlerSchemas: {
11924
12030
  contentType: z.ZodOptional<z.ZodString>;
11925
12031
  servesHtml: z.ZodOptional<z.ZodBoolean>;
11926
12032
  error: z.ZodOptional<z.ZodString>;
12033
+ errorKind: z.ZodOptional<z.ZodEnum<{
12034
+ unknown: "unknown";
12035
+ timeout: "timeout";
12036
+ dns: "dns";
12037
+ tls: "tls";
12038
+ "redirect-limit": "redirect-limit";
12039
+ aborted: "aborted";
12040
+ "too-large": "too-large";
12041
+ }>>;
11927
12042
  links: z.ZodOptional<z.ZodObject<{
11928
12043
  found: z.ZodNumber;
11929
12044
  checked: z.ZodNumber;
@@ -12904,10 +13019,10 @@ export declare const crawlerSchemas: {
12904
13019
  raw: z.ZodString;
12905
13020
  resolved: z.ZodOptional<z.ZodString>;
12906
13021
  ignoredReason: z.ZodOptional<z.ZodEnum<{
12907
- "invalid-url": "invalid-url";
12908
13022
  "outside-head": "outside-head";
12909
13023
  "alternate-qualifier": "alternate-qualifier";
12910
13024
  fragment: "fragment";
13025
+ "invalid-url": "invalid-url";
12911
13026
  "non-http-url": "non-http-url";
12912
13027
  }>>;
12913
13028
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -13328,17 +13443,17 @@ export declare const crawlerJsonSchemas: {
13328
13443
  skippedUrls: z.ZodNumber;
13329
13444
  skipReasons: z.ZodArray<z.ZodObject<{
13330
13445
  reason: z.ZodEnum<{
13446
+ "invalid-url": "invalid-url";
13447
+ "robots-disallowed": "robots-disallowed";
13448
+ "origin-backpressure": "origin-backpressure";
13331
13449
  "asset-url": "asset-url";
13332
13450
  "cdn-utility-url": "cdn-utility-url";
13333
13451
  "configured-exclusion": "configured-exclusion";
13334
13452
  "duplicate-normalization": "duplicate-normalization";
13335
- "invalid-url": "invalid-url";
13336
13453
  "memory-pressure": "memory-pressure";
13337
13454
  "off-origin": "off-origin";
13338
- "origin-backpressure": "origin-backpressure";
13339
13455
  "queue-safety-limit": "queue-safety-limit";
13340
13456
  "query-variant-limit": "query-variant-limit";
13341
- "robots-disallowed": "robots-disallowed";
13342
13457
  "robots-uncertain": "robots-uncertain";
13343
13458
  "legacy-unclassified": "legacy-unclassified";
13344
13459
  }>;
@@ -13711,10 +13826,10 @@ export declare const crawlerJsonSchemas: {
13711
13826
  raw: z.ZodString;
13712
13827
  resolved: z.ZodOptional<z.ZodString>;
13713
13828
  ignoredReason: z.ZodOptional<z.ZodEnum<{
13714
- "invalid-url": "invalid-url";
13715
13829
  "outside-head": "outside-head";
13716
13830
  "alternate-qualifier": "alternate-qualifier";
13717
13831
  fragment: "fragment";
13832
+ "invalid-url": "invalid-url";
13718
13833
  "non-http-url": "non-http-url";
13719
13834
  }>>;
13720
13835
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -14143,6 +14258,15 @@ export declare const crawlerJsonSchemas: {
14143
14258
  contentType: z.ZodOptional<z.ZodString>;
14144
14259
  servesHtml: z.ZodOptional<z.ZodBoolean>;
14145
14260
  error: z.ZodOptional<z.ZodString>;
14261
+ errorKind: z.ZodOptional<z.ZodEnum<{
14262
+ unknown: "unknown";
14263
+ timeout: "timeout";
14264
+ dns: "dns";
14265
+ tls: "tls";
14266
+ "redirect-limit": "redirect-limit";
14267
+ aborted: "aborted";
14268
+ "too-large": "too-large";
14269
+ }>>;
14146
14270
  sitemapUrls: z.ZodArray<z.ZodString>;
14147
14271
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
14148
14272
  botAccess: z.ZodArray<z.ZodObject<{
@@ -14171,6 +14295,15 @@ export declare const crawlerJsonSchemas: {
14171
14295
  contentType: z.ZodOptional<z.ZodString>;
14172
14296
  servesHtml: z.ZodOptional<z.ZodBoolean>;
14173
14297
  error: z.ZodOptional<z.ZodString>;
14298
+ errorKind: z.ZodOptional<z.ZodEnum<{
14299
+ unknown: "unknown";
14300
+ timeout: "timeout";
14301
+ dns: "dns";
14302
+ tls: "tls";
14303
+ "redirect-limit": "redirect-limit";
14304
+ aborted: "aborted";
14305
+ "too-large": "too-large";
14306
+ }>>;
14174
14307
  links: z.ZodOptional<z.ZodObject<{
14175
14308
  found: z.ZodNumber;
14176
14309
  checked: z.ZodNumber;
@@ -14646,17 +14779,17 @@ export declare const crawlerJsonSchemas: {
14646
14779
  skippedUrls: z.ZodNumber;
14647
14780
  skipReasons: z.ZodArray<z.ZodObject<{
14648
14781
  reason: z.ZodEnum<{
14782
+ "invalid-url": "invalid-url";
14783
+ "robots-disallowed": "robots-disallowed";
14784
+ "origin-backpressure": "origin-backpressure";
14649
14785
  "asset-url": "asset-url";
14650
14786
  "cdn-utility-url": "cdn-utility-url";
14651
14787
  "configured-exclusion": "configured-exclusion";
14652
14788
  "duplicate-normalization": "duplicate-normalization";
14653
- "invalid-url": "invalid-url";
14654
14789
  "memory-pressure": "memory-pressure";
14655
14790
  "off-origin": "off-origin";
14656
- "origin-backpressure": "origin-backpressure";
14657
14791
  "queue-safety-limit": "queue-safety-limit";
14658
14792
  "query-variant-limit": "query-variant-limit";
14659
- "robots-disallowed": "robots-disallowed";
14660
14793
  "robots-uncertain": "robots-uncertain";
14661
14794
  "legacy-unclassified": "legacy-unclassified";
14662
14795
  }>;
@@ -15029,10 +15162,10 @@ export declare const crawlerJsonSchemas: {
15029
15162
  raw: z.ZodString;
15030
15163
  resolved: z.ZodOptional<z.ZodString>;
15031
15164
  ignoredReason: z.ZodOptional<z.ZodEnum<{
15032
- "invalid-url": "invalid-url";
15033
15165
  "outside-head": "outside-head";
15034
15166
  "alternate-qualifier": "alternate-qualifier";
15035
15167
  fragment: "fragment";
15168
+ "invalid-url": "invalid-url";
15036
15169
  "non-http-url": "non-http-url";
15037
15170
  }>>;
15038
15171
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -15461,6 +15594,15 @@ export declare const crawlerJsonSchemas: {
15461
15594
  contentType: z.ZodOptional<z.ZodString>;
15462
15595
  servesHtml: z.ZodOptional<z.ZodBoolean>;
15463
15596
  error: z.ZodOptional<z.ZodString>;
15597
+ errorKind: z.ZodOptional<z.ZodEnum<{
15598
+ unknown: "unknown";
15599
+ timeout: "timeout";
15600
+ dns: "dns";
15601
+ tls: "tls";
15602
+ "redirect-limit": "redirect-limit";
15603
+ aborted: "aborted";
15604
+ "too-large": "too-large";
15605
+ }>>;
15464
15606
  sitemapUrls: z.ZodArray<z.ZodString>;
15465
15607
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
15466
15608
  botAccess: z.ZodArray<z.ZodObject<{
@@ -15489,6 +15631,15 @@ export declare const crawlerJsonSchemas: {
15489
15631
  contentType: z.ZodOptional<z.ZodString>;
15490
15632
  servesHtml: z.ZodOptional<z.ZodBoolean>;
15491
15633
  error: z.ZodOptional<z.ZodString>;
15634
+ errorKind: z.ZodOptional<z.ZodEnum<{
15635
+ unknown: "unknown";
15636
+ timeout: "timeout";
15637
+ dns: "dns";
15638
+ tls: "tls";
15639
+ "redirect-limit": "redirect-limit";
15640
+ aborted: "aborted";
15641
+ "too-large": "too-large";
15642
+ }>>;
15492
15643
  links: z.ZodOptional<z.ZodObject<{
15493
15644
  found: z.ZodNumber;
15494
15645
  checked: z.ZodNumber;
@@ -15964,17 +16115,17 @@ export declare const crawlerJsonSchemas: {
15964
16115
  skippedUrls: z.ZodNumber;
15965
16116
  skipReasons: z.ZodArray<z.ZodObject<{
15966
16117
  reason: z.ZodEnum<{
16118
+ "invalid-url": "invalid-url";
16119
+ "robots-disallowed": "robots-disallowed";
16120
+ "origin-backpressure": "origin-backpressure";
15967
16121
  "asset-url": "asset-url";
15968
16122
  "cdn-utility-url": "cdn-utility-url";
15969
16123
  "configured-exclusion": "configured-exclusion";
15970
16124
  "duplicate-normalization": "duplicate-normalization";
15971
- "invalid-url": "invalid-url";
15972
16125
  "memory-pressure": "memory-pressure";
15973
16126
  "off-origin": "off-origin";
15974
- "origin-backpressure": "origin-backpressure";
15975
16127
  "queue-safety-limit": "queue-safety-limit";
15976
16128
  "query-variant-limit": "query-variant-limit";
15977
- "robots-disallowed": "robots-disallowed";
15978
16129
  "robots-uncertain": "robots-uncertain";
15979
16130
  "legacy-unclassified": "legacy-unclassified";
15980
16131
  }>;
@@ -16347,10 +16498,10 @@ export declare const crawlerJsonSchemas: {
16347
16498
  raw: z.ZodString;
16348
16499
  resolved: z.ZodOptional<z.ZodString>;
16349
16500
  ignoredReason: z.ZodOptional<z.ZodEnum<{
16350
- "invalid-url": "invalid-url";
16351
16501
  "outside-head": "outside-head";
16352
16502
  "alternate-qualifier": "alternate-qualifier";
16353
16503
  fragment: "fragment";
16504
+ "invalid-url": "invalid-url";
16354
16505
  "non-http-url": "non-http-url";
16355
16506
  }>>;
16356
16507
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -16779,6 +16930,15 @@ export declare const crawlerJsonSchemas: {
16779
16930
  contentType: z.ZodOptional<z.ZodString>;
16780
16931
  servesHtml: z.ZodOptional<z.ZodBoolean>;
16781
16932
  error: z.ZodOptional<z.ZodString>;
16933
+ errorKind: z.ZodOptional<z.ZodEnum<{
16934
+ unknown: "unknown";
16935
+ timeout: "timeout";
16936
+ dns: "dns";
16937
+ tls: "tls";
16938
+ "redirect-limit": "redirect-limit";
16939
+ aborted: "aborted";
16940
+ "too-large": "too-large";
16941
+ }>>;
16782
16942
  sitemapUrls: z.ZodArray<z.ZodString>;
16783
16943
  contentSignals: z.ZodOptional<z.ZodArray<z.ZodString>>;
16784
16944
  botAccess: z.ZodArray<z.ZodObject<{
@@ -16807,6 +16967,15 @@ export declare const crawlerJsonSchemas: {
16807
16967
  contentType: z.ZodOptional<z.ZodString>;
16808
16968
  servesHtml: z.ZodOptional<z.ZodBoolean>;
16809
16969
  error: z.ZodOptional<z.ZodString>;
16970
+ errorKind: z.ZodOptional<z.ZodEnum<{
16971
+ unknown: "unknown";
16972
+ timeout: "timeout";
16973
+ dns: "dns";
16974
+ tls: "tls";
16975
+ "redirect-limit": "redirect-limit";
16976
+ aborted: "aborted";
16977
+ "too-large": "too-large";
16978
+ }>>;
16810
16979
  links: z.ZodOptional<z.ZodObject<{
16811
16980
  found: z.ZodNumber;
16812
16981
  checked: z.ZodNumber;
@@ -17787,10 +17956,10 @@ export declare const crawlerJsonSchemas: {
17787
17956
  raw: z.ZodString;
17788
17957
  resolved: z.ZodOptional<z.ZodString>;
17789
17958
  ignoredReason: z.ZodOptional<z.ZodEnum<{
17790
- "invalid-url": "invalid-url";
17791
17959
  "outside-head": "outside-head";
17792
17960
  "alternate-qualifier": "alternate-qualifier";
17793
17961
  fragment: "fragment";
17962
+ "invalid-url": "invalid-url";
17794
17963
  "non-http-url": "non-http-url";
17795
17964
  }>>;
17796
17965
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -18103,12 +18272,12 @@ export declare const providerPackageNameSchema: z.ZodString;
18103
18272
  export declare const providerExactVersionSchema: z.ZodString;
18104
18273
  export declare const providerIntegritySchema: z.ZodString;
18105
18274
  export declare const providerKindSchema: z.ZodEnum<{
18275
+ "local-search": "local-search";
18106
18276
  "traffic-analytics": "traffic-analytics";
18107
18277
  "search-results": "search-results";
18108
18278
  "keyword-data": "keyword-data";
18109
18279
  "domain-data": "domain-data";
18110
18280
  "link-data": "link-data";
18111
- "local-search": "local-search";
18112
18281
  "ai-data": "ai-data";
18113
18282
  other: "other";
18114
18283
  }>;
@@ -18151,12 +18320,12 @@ export declare const providerRegistrationSchema: z.ZodObject<{
18151
18320
  displayName: z.ZodString;
18152
18321
  description: z.ZodString;
18153
18322
  kinds: z.ZodArray<z.ZodEnum<{
18323
+ "local-search": "local-search";
18154
18324
  "traffic-analytics": "traffic-analytics";
18155
18325
  "search-results": "search-results";
18156
18326
  "keyword-data": "keyword-data";
18157
18327
  "domain-data": "domain-data";
18158
18328
  "link-data": "link-data";
18159
- "local-search": "local-search";
18160
18329
  "ai-data": "ai-data";
18161
18330
  other: "other";
18162
18331
  }>>;
@@ -18221,10 +18390,9 @@ export declare const providerIdSchema: z.ZodString;
18221
18390
  export type ProviderId = z.infer<typeof providerIdSchema>;
18222
18391
  export type ExternalServiceId = string;
18223
18392
  export declare const providerCapabilitySchema: z.ZodEnum<{
18224
- "local-search": "local-search";
18393
+ "serp-snapshot": "serp-snapshot";
18225
18394
  "keyword-metrics": "keyword-metrics";
18226
18395
  "keyword-discovery": "keyword-discovery";
18227
- "serp-snapshot": "serp-snapshot";
18228
18396
  "domain-overview": "domain-overview";
18229
18397
  "ranked-keywords": "ranked-keywords";
18230
18398
  "relevant-pages": "relevant-pages";
@@ -18233,6 +18401,7 @@ export declare const providerCapabilitySchema: z.ZodEnum<{
18233
18401
  "referring-domains": "referring-domains";
18234
18402
  backlinks: "backlinks";
18235
18403
  "domain-rating": "domain-rating";
18404
+ "local-search": "local-search";
18236
18405
  "ai-mentions": "ai-mentions";
18237
18406
  "ai-prompt-observation": "ai-prompt-observation";
18238
18407
  }>;
@@ -18392,6 +18561,103 @@ type ResolvedCrawlSiteDependencies = {
18392
18561
  };
18393
18562
  type CrawlSiteDependencies = Partial<ResolvedCrawlSiteDependencies>;
18394
18563
  export declare function crawlSite(input: CrawlConfigInput, dependencies?: CrawlSiteDependencies): Promise<CrawlReport>;
18564
+ export declare const SITE_FACTS_MAX_SITES = 1000;
18565
+ export declare const SITE_FACTS_DEFAULT_CONCURRENCY = 8;
18566
+ export declare const SITE_FACTS_MAX_CONCURRENCY = 16;
18567
+ export declare const SITE_FACTS_TIMEOUT_MS = 5000;
18568
+ export type SiteHomepageFacts = {
18569
+ url: string;
18570
+ outcome: 'response' | 'failed' | 'skipped';
18571
+ skipReason?: 'robots-disallowed' | 'robots-unknown';
18572
+ availability?: CrawlAiAvailability;
18573
+ status?: number;
18574
+ finalUrl?: string;
18575
+ redirects?: NonNullable<PageFetchResult['diagnostics']['redirectChain']>;
18576
+ contentType?: string;
18577
+ accessBlock?: {
18578
+ provider: string;
18579
+ kind: string;
18580
+ };
18581
+ responseTimeMs?: number;
18582
+ sizeBytes?: number;
18583
+ title?: string;
18584
+ metaDescription?: string;
18585
+ h1?: string;
18586
+ lang?: string;
18587
+ canonical?: string;
18588
+ metaRobots?: string;
18589
+ xRobotsTag?: string;
18590
+ indexable?: boolean;
18591
+ indexability?: string;
18592
+ markdownAlternates?: string[];
18593
+ contentSignal?: string;
18594
+ linkRelations?: string[];
18595
+ error?: string;
18596
+ errorKind?: CrawlFetchErrorKind;
18597
+ };
18598
+ export type SiteRobotsFacts = Omit<NonNullable<CrawlAiSignals['robotsTxt']>, 'sitemapUrls'> & {
18599
+ sitemapUrls: string[];
18600
+ sitemapCount: number;
18601
+ homepageAllowed: boolean | null;
18602
+ };
18603
+ export type SiteLlmsFacts = NonNullable<CrawlAiSignals['llmsTxt']> & {
18604
+ sizeBytes?: number;
18605
+ startsWithH1?: boolean;
18606
+ h1?: string;
18607
+ sameSiteLinks?: number;
18608
+ };
18609
+ export type SiteFactsRow = {
18610
+ type: 'site';
18611
+ input: string;
18612
+ origin?: string;
18613
+ error?: string;
18614
+ checkedAt?: string;
18615
+ robotsTxt?: SiteRobotsFacts;
18616
+ homepage?: SiteHomepageFacts;
18617
+ llmsTxt?: SiteLlmsFacts;
18618
+ };
18619
+ type AvailabilityCounts = Record<CrawlAiAvailability, number> & {
18620
+ failed: number;
18621
+ };
18622
+ export type SiteFactsSummary = {
18623
+ type: 'summary';
18624
+ status: 'complete' | 'cancelled';
18625
+ sites: number;
18626
+ checked: number;
18627
+ invalid: number;
18628
+ duplicatesRemoved: number;
18629
+ maxSites: number;
18630
+ concurrency: number;
18631
+ timeoutMs: number;
18632
+ durationMs: number;
18633
+ robotsTxt: AvailabilityCounts;
18634
+ homepage: AvailabilityCounts & {
18635
+ skipped: number;
18636
+ };
18637
+ llmsTxt: AvailabilityCounts & {
18638
+ startsWithH1: number;
18639
+ };
18640
+ botAccess: Array<{
18641
+ userAgent: string;
18642
+ purpose: CrawlAiBotAccess['purpose'];
18643
+ allowed: number;
18644
+ blocked: number;
18645
+ unknown: number;
18646
+ }>;
18647
+ };
18648
+ type Fetch = typeof publicHttpFetch;
18649
+ export type SiteFactsInput = {
18650
+ sites: string[];
18651
+ concurrency?: number;
18652
+ respectRobots?: boolean;
18653
+ signal?: AbortSignal;
18654
+ onRow: (row: SiteFactsRow) => Promise<void> | void;
18655
+ };
18656
+ export type SiteFactsDependencies = {
18657
+ fetch?: Fetch;
18658
+ now?: () => Date;
18659
+ };
18660
+ export declare function checkSites(input: SiteFactsInput, dependencies?: SiteFactsDependencies): Promise<SiteFactsSummary>;
18395
18661
  type QueryFlag = 'likely-automated' | 'navigational-other';
18396
18662
  declare const QUERY_FLAG_METHOD: {
18397
18663
  readonly id: "query_flags_v1";
@@ -20606,6 +20872,7 @@ export type IndexCoverageReportDependencies = {
20606
20872
  now: () => Date;
20607
20873
  };
20608
20874
  export declare function indexCoverageSignals(input: IndexCoverageReportInput, dependencies?: IndexCoverageReportDependencies): Promise<IndexCoverageReport>;
20875
+ type RedirectOutcome = 'done' | 'loop' | 'too_many' | 'timeout' | 'error';
20609
20876
  export type RedirectTraceStep = {
20610
20877
  url: string;
20611
20878
  status: number;
@@ -20620,7 +20887,9 @@ export type RedirectTraceReport = {
20620
20887
  generatedAt: string;
20621
20888
  summary: {
20622
20889
  hops: number;
20623
- finalStatus: number;
20890
+ finalStatus: number | null;
20891
+ outcome: RedirectOutcome;
20892
+ error?: string;
20624
20893
  finalIndexable?: boolean;
20625
20894
  issues: RedirectTraceIssue[];
20626
20895
  };
@@ -21535,6 +21804,7 @@ type PageFacts = {
21535
21804
  h1: string | null;
21536
21805
  canonical: string | null;
21537
21806
  robots: string | null;
21807
+ google_noindex: boolean | null;
21538
21808
  www_authenticate?: string;
21539
21809
  error?: string;
21540
21810
  };
@@ -21555,7 +21825,7 @@ type CommandDeps = {
21555
21825
  searchAnalytics: SearchAnalyticsQuery;
21556
21826
  checkPages: (urls: string[]) => Promise<PageFacts[]>;
21557
21827
  liveCheck: (url: string) => Promise<LiveCheck>;
21558
- inspect: (site: string, url: string) => Promise<IndexStatus>;
21828
+ inspect: (site: string, url: string, signal?: AbortSignal) => Promise<IndexStatus>;
21559
21829
  inspectionQuota?: (site: string) => Promise<{
21560
21830
  used: number;
21561
21831
  limit: number;
@@ -21567,7 +21837,7 @@ type CommandDeps = {
21567
21837
  }>;
21568
21838
  save: (site: string, url: string, status: IndexStatus) => void;
21569
21839
  };
21570
- pageMarkdown?: (url: string) => Promise<PageMarkdown>;
21840
+ pageMarkdown?: (url: string, limit?: number) => Promise<PageMarkdown>;
21571
21841
  call: Caller;
21572
21842
  bing?: () => Promise<BingCall | null>;
21573
21843
  bingConnect?: string;
@@ -21576,6 +21846,7 @@ type CommandDeps = {
21576
21846
  week?: () => Promise<WeekData | null>;
21577
21847
  startAudit?: (site: string) => Promise<StartAudit>;
21578
21848
  issues?: IssueStore;
21849
+ progress?: ProgressReporter;
21579
21850
  now?: () => Date;
21580
21851
  };
21581
21852
  type StartAudit = {
@@ -21758,10 +22029,16 @@ export declare function openCloudLink(url: string): Promise<void>;
21758
22029
  type LintSource = {
21759
22030
  path: string;
21760
22031
  text: string;
22032
+ note?: string;
22033
+ partial?: string;
21761
22034
  } | {
21762
22035
  path: string;
21763
22036
  skipped: string;
21764
22037
  };
22038
+ type ResearchStore = {
22039
+ get(key: string): Promise<string | null>;
22040
+ put(key: string, value: string, ttlSeconds: number): Promise<void>;
22041
+ };
21765
22042
  export type TokenStorageMode = 'keychain' | 'file';
21766
22043
  export type TokenStorageStatus = {
21767
22044
  configured: TokenStorageMode;
@@ -21872,6 +22149,7 @@ export declare function nodeCommandDeps(options: {
21872
22149
  account?: string;
21873
22150
  refresh?: boolean;
21874
22151
  }): CommandDeps;
22152
+ export declare function localResearchStore(refresh?: boolean): ResearchStore;
21875
22153
  export declare const LOCAL_BING_CONNECT = "Connect Bing on your seoskill.dev account and run `seo login`, or run `seo providers bing connect` with an API key from Bing Webmaster Tools (Settings, API access).";
21876
22154
  export declare function localBing(): Promise<BingCall | null>;
21877
22155
  export declare function localAccounts(): Promise<GoogleAccount[]>;
@@ -22638,5 +22916,5 @@ export declare function parseOlderThan(input?: string): number | undefined;
22638
22916
  export declare function formatRelativeExpiry(expiresAt: number): string;
22639
22917
  export declare function isoDate(daysAgo?: number): string;
22640
22918
  export declare const SEO_VERSION: string;
22641
- export { type AiReferralDataSource, type AiReferralMetrics, type AiReferralQueryEvidence, type AiReferralReport, type AiReferralSourceDefinition, type AnalyzeCannibalImportRowsInput, type AnalyzeCannibalRowsInput, type AnalyzeDecayInput, type AnalyzeQuickWinsInput, type AnalyzeSecondPageInput, type AnalyzeStrikingDistanceInput, type CannibalAnalysis, type CannibalImportAnalysis, type CannibalImportItem, type CannibalImportPage, type CannibalImportReport, type CannibalImportSelection, type CannibalItem, type CannibalPage, type CannibalReport, type CannibalSelection, type CannibalSuppression, type CannibalSuppressionReason, type CrawlAiAvailability, type CrawlAiBotAccess, type CrawlAiLinkCheck, type CrawlAiResourceSignal, type CrawlAiSignals, type CrawlSiteChecks, type CrawlSiteDependencies, type CrawlStatusPhase, type CtrUnderperformer, type CtrUnderperformerSelection, type DataForSeoAccountSnapshot, type DataForSeoClientOptions, type DecayAnalysis, type DecayComparison, type DecayDiagnosis, type DecayGroup, type DecayItem, type DecayMetrics, type DecayReport, type DecaySelection, type DecaySignal, type FetchPageOptions, type FetchRateControls, type Ga4AccountSummary, type Ga4PropertySummary, type GoogleAccessTokenClient, type InternalLinkSuggestion, type InternalLinksPage, type InternalLinksReport, type JavaScriptRenderingInput, type JavaScriptRenderingMode, type OAuthClientConfig, type PageOpportunityAnalysis, type PageOpportunityAnalysisInput, type PageOpportunityBenchmark, type PageOpportunityItem, type PageOpportunitySelection, type PageOpportunityType, type PageOpportunityVerification, type PageRenderer, type QueryClusterPage, type QueryClusterRow, type QuickWinAnalysis, type QuickWinGroup, type QuickWinItem, type QuickWinSelection, type QuickWinTemplateRecommendation, SEO_PROVIDER_API_VERSION, type SearchStatusIncident, type SearchUpdate, type SecondPageAnalysis, type SecondPageItem, type SecondPageQuery, type SecondPageRecommendation, type SecondPageReport, type SecondPageSelection, type SegmentDimension, type SegmentImpactItem, type SegmentImpactReport, type SegmentImpactSelection, type SegmentPeriodEvidence, type SegmentRange, SeoAnalyticsConnection, SeoAnalyticsLandingPageResult, SeoLandingPageVisitRow, SeoLandingPageVisitsCapability, SeoLandingPageVisitsResult, SeoProviderActionAdapter, SeoProviderActivate, SeoProviderApiVersion, SeoProviderCapabilityAdapter, SeoProviderCapabilityId, SeoProviderConnection, SeoProviderConnectionAdapter, SeoProviderConnectionField, SeoProviderHost, SeoProviderJson, SeoProviderJsonSchema, SeoProviderKind, SeoProviderRegistration, SeoProviderRequest, SeoProviderRuntime, SeoSearchMarket, SeoSerpLocalPackResult, SeoSerpOrganicResult, SeoSerpSnapshotCapability, SeoSerpSnapshotResult, type StrikingDistanceAnalysis, type StrikingDistanceAnalysisGroup, type StrikingDistanceAnalysisItem, type TelemetryErrorCategory, type TelemetryFailureClassification, type TelemetryFailureContext, type TelemetryFailureReason, type TelemetryOperation, type UnmatchedSegment, pageTechnicalSignals as technicalPageSignals };
22919
+ export { type AiReferralDataSource, type AiReferralMetrics, type AiReferralQueryEvidence, type AiReferralReport, type AiReferralSourceDefinition, type AnalyzeCannibalImportRowsInput, type AnalyzeCannibalRowsInput, type AnalyzeDecayInput, type AnalyzeQuickWinsInput, type AnalyzeSecondPageInput, type AnalyzeStrikingDistanceInput, type CannibalAnalysis, type CannibalImportAnalysis, type CannibalImportItem, type CannibalImportPage, type CannibalImportReport, type CannibalImportSelection, type CannibalItem, type CannibalPage, type CannibalReport, type CannibalSelection, type CannibalSuppression, type CannibalSuppressionReason, type CrawlAiAvailability, type CrawlAiBotAccess, type CrawlAiLinkCheck, type CrawlAiResourceSignal, type CrawlAiSignals, type CrawlFetchErrorKind, type CrawlSiteChecks, type CrawlSiteDependencies, type CrawlStatusPhase, type CtrUnderperformer, type CtrUnderperformerSelection, type DataForSeoAccountSnapshot, type DataForSeoClientOptions, type DecayAnalysis, type DecayComparison, type DecayDiagnosis, type DecayGroup, type DecayItem, type DecayMetrics, type DecayReport, type DecaySelection, type DecaySignal, type FetchPageOptions, type FetchRateControls, type Ga4AccountSummary, type Ga4PropertySummary, type GoogleAccessTokenClient, type InternalLinkSuggestion, type InternalLinksPage, type InternalLinksReport, type JavaScriptRenderingInput, type JavaScriptRenderingMode, type OAuthClientConfig, type PageOpportunityAnalysis, type PageOpportunityAnalysisInput, type PageOpportunityBenchmark, type PageOpportunityItem, type PageOpportunitySelection, type PageOpportunityType, type PageOpportunityVerification, type PageRenderer, type QueryClusterPage, type QueryClusterRow, type QuickWinAnalysis, type QuickWinGroup, type QuickWinItem, type QuickWinSelection, type QuickWinTemplateRecommendation, SEO_PROVIDER_API_VERSION, type SearchStatusIncident, type SearchUpdate, type SecondPageAnalysis, type SecondPageItem, type SecondPageQuery, type SecondPageRecommendation, type SecondPageReport, type SecondPageSelection, type SegmentDimension, type SegmentImpactItem, type SegmentImpactReport, type SegmentImpactSelection, type SegmentPeriodEvidence, type SegmentRange, SeoAnalyticsConnection, SeoAnalyticsLandingPageResult, SeoLandingPageVisitRow, SeoLandingPageVisitsCapability, SeoLandingPageVisitsResult, SeoProviderActionAdapter, SeoProviderActivate, SeoProviderApiVersion, SeoProviderCapabilityAdapter, SeoProviderCapabilityId, SeoProviderConnection, SeoProviderConnectionAdapter, SeoProviderConnectionField, SeoProviderHost, SeoProviderJson, SeoProviderJsonSchema, SeoProviderKind, SeoProviderRegistration, SeoProviderRequest, SeoProviderRuntime, SeoSearchMarket, SeoSerpLocalPackResult, SeoSerpOrganicResult, SeoSerpSnapshotCapability, SeoSerpSnapshotResult, type StrikingDistanceAnalysis, type StrikingDistanceAnalysisGroup, type StrikingDistanceAnalysisItem, type TelemetryErrorCategory, type TelemetryFailureClassification, type TelemetryFailureContext, type TelemetryFailureReason, type TelemetryOperation, type UnmatchedSegment, pageTechnicalSignals as technicalPageSignals };
22642
22920
  //# sourceMappingURL=index.d.ts.map