seo 0.15.2 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -198,7 +198,7 @@ export interface PageFetchDiagnostics {
198
198
  };
199
199
  documentDifference?: RenderingDocumentDifference;
200
200
  browser?: {
201
- source: 'environment' | 'playwright-cache' | 'system';
201
+ source: 'environment' | 'playwright-cache' | 'agent-browser-cache' | 'system';
202
202
  product: string;
203
203
  version?: string;
204
204
  };
@@ -680,6 +680,19 @@ declare const RULE_DEFINITIONS: readonly [{
680
680
  readonly evidenceFields: ["page.wordCount", "page.contentSample", "page.outgoingInternalCount", "page.fetchDiagnostics.rendering"];
681
681
  readonly suggestedCommands: ["seo crawl <url> --max-pages 1 --json"];
682
682
  };
683
+ }, {
684
+ readonly id: "crawl_single_page_reach";
685
+ readonly title: "Crawl could reach only the start page";
686
+ readonly category: "links";
687
+ readonly defaultSeverity: "high";
688
+ readonly whyItMatters: "The start page had no crawlable internal links and no sitemap returned URLs, so the crawl checked one page. Every other finding in this report covers that page only. The page probably builds its links with JavaScript.";
689
+ readonly howToFix: "Rerun with `--rendering on` so the crawler reads the links a browser sees, or pass the pages to check with `--mode list`. For crawlers that do not run JavaScript, put plain `<a href>` links in the initial HTML and publish a sitemap.";
690
+ readonly impactIfIgnored: "Crawlers and audits that do not run JavaScript can find only this page, so the rest of the site stays unchecked and harder to discover.";
691
+ readonly howToVerify: "Rerun the crawl and confirm it retains more than one page and the start page reports internal links.";
692
+ readonly agentHints: {
693
+ readonly evidenceFields: ["page.outgoingInternalCount", "report.sitemapDiscovery.urlsReturned", "page.fetchDiagnostics.rendering"];
694
+ readonly suggestedCommands: ["seo crawl <url> --rendering on --json", "seo crawl --mode list --urls <url>,<url> --json"];
695
+ };
683
696
  }, {
684
697
  readonly id: "soft_404";
685
698
  readonly title: "Unknown URLs return a successful response";
@@ -688,7 +701,7 @@ declare const RULE_DEFINITIONS: readonly [{
688
701
  readonly whyItMatters: "Known-nonexistent URLs returned a successful response or redirected to another successful page. Search engines and users cannot reliably distinguish missing content from a real page.";
689
702
  readonly howToFix: "Return 404 or 410 for missing URLs. If a replacement exists, redirect only the specific retired URL to its closest relevant replacement rather than sending every unknown path to a generic page.";
690
703
  readonly impactIfIgnored: "Missing URLs can remain in crawl queues, waste crawl attention, and create confusing search or monitoring evidence.";
691
- readonly howToVerify: "Request several known-nonexistent paths and confirm each returns 404 or 410 without redirecting to a generic successful page.";
704
+ readonly howToVerify: "Request several made-up paths, including one at the site root and one nested path, and confirm each returns 404 or 410 without redirecting to a generic successful page.";
692
705
  readonly agentHints: {
693
706
  readonly evidenceFields: ["report.siteChecks.soft404"];
694
707
  readonly suggestedCommands: ["seo crawl <url> --json"];
@@ -2818,7 +2831,7 @@ export declare function fetchSitemapUrls(input: {
2818
2831
  limit?: number;
2819
2832
  maxNested?: number;
2820
2833
  }): Promise<SitemapFetchResult>;
2821
- export declare const CRAWL_SKIP_REASONS: readonly ["asset-url", "configured-exclusion", "duplicate-normalization", "invalid-url", "memory-pressure", "off-origin", "origin-backpressure", "queue-safety-limit", "robots-disallowed", "robots-uncertain", "legacy-unclassified"];
2834
+ export declare const CRAWL_SKIP_REASONS: readonly ["asset-url", "cdn-utility-url", "configured-exclusion", "duplicate-normalization", "invalid-url", "memory-pressure", "off-origin", "origin-backpressure", "queue-safety-limit", "query-variant-limit", "robots-disallowed", "robots-uncertain", "legacy-unclassified"];
2822
2835
  export type CrawlSkipReason = (typeof CRAWL_SKIP_REASONS)[number];
2823
2836
  export type CrawlSkipImpact = 'coverage-affecting' | 'non-impacting';
2824
2837
  export type CrawlSkipReasonCount = {
@@ -3254,6 +3267,8 @@ export declare function reviewObservations(report: CrawlReport, filters?: Omit<T
3254
3267
  export type CrawlOutputFormat = 'pretty' | 'json' | 'csv' | 'html' | 'markdown' | 'junit';
3255
3268
  export declare function renderCrawlCsv(report: CrawlReport): string;
3256
3269
  export declare function renderCrawlPagesCsv(report: CrawlReport): string;
3270
+ /** The caveat a report must lead with when the crawl read too little. */
3271
+ export declare function crawlCoverageCaveat(report: CrawlReport): string | undefined;
3257
3272
  export declare function renderCrawlPretty(report: CrawlReport, fixes?: TopFix[]): string;
3258
3273
  export declare function renderCrawlJunit(report: CrawlReport): string;
3259
3274
  export declare function renderCrawlHtml(report: CrawlReport, fixes?: TopFix[]): string;
@@ -3568,6 +3583,7 @@ export declare const crawlPageSnapshotSchema: z.ZodObject<{
3568
3583
  source: z.ZodEnum<{
3569
3584
  environment: "environment";
3570
3585
  "playwright-cache": "playwright-cache";
3586
+ "agent-browser-cache": "agent-browser-cache";
3571
3587
  system: "system";
3572
3588
  }>;
3573
3589
  product: z.ZodString;
@@ -3668,10 +3684,10 @@ export declare const crawlPageSnapshotSchema: z.ZodObject<{
3668
3684
  raw: z.ZodString;
3669
3685
  resolved: z.ZodOptional<z.ZodString>;
3670
3686
  ignoredReason: z.ZodOptional<z.ZodEnum<{
3687
+ "invalid-url": "invalid-url";
3671
3688
  "outside-head": "outside-head";
3672
3689
  "alternate-qualifier": "alternate-qualifier";
3673
3690
  fragment: "fragment";
3674
- "invalid-url": "invalid-url";
3675
3691
  "non-http-url": "non-http-url";
3676
3692
  }>>;
3677
3693
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -4305,15 +4321,17 @@ export declare const crawlReportSummarySchema: z.ZodObject<{
4305
4321
  skippedUrls: z.ZodNumber;
4306
4322
  skipReasons: z.ZodArray<z.ZodObject<{
4307
4323
  reason: z.ZodEnum<{
4308
- "invalid-url": "invalid-url";
4309
- "robots-disallowed": "robots-disallowed";
4310
- "origin-backpressure": "origin-backpressure";
4311
4324
  "asset-url": "asset-url";
4325
+ "cdn-utility-url": "cdn-utility-url";
4312
4326
  "configured-exclusion": "configured-exclusion";
4313
4327
  "duplicate-normalization": "duplicate-normalization";
4328
+ "invalid-url": "invalid-url";
4314
4329
  "memory-pressure": "memory-pressure";
4315
4330
  "off-origin": "off-origin";
4331
+ "origin-backpressure": "origin-backpressure";
4316
4332
  "queue-safety-limit": "queue-safety-limit";
4333
+ "query-variant-limit": "query-variant-limit";
4334
+ "robots-disallowed": "robots-disallowed";
4317
4335
  "robots-uncertain": "robots-uncertain";
4318
4336
  "legacy-unclassified": "legacy-unclassified";
4319
4337
  }>;
@@ -4471,15 +4489,17 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4471
4489
  skippedUrls: z.ZodNumber;
4472
4490
  skipReasons: z.ZodArray<z.ZodObject<{
4473
4491
  reason: z.ZodEnum<{
4474
- "invalid-url": "invalid-url";
4475
- "robots-disallowed": "robots-disallowed";
4476
- "origin-backpressure": "origin-backpressure";
4477
4492
  "asset-url": "asset-url";
4493
+ "cdn-utility-url": "cdn-utility-url";
4478
4494
  "configured-exclusion": "configured-exclusion";
4479
4495
  "duplicate-normalization": "duplicate-normalization";
4496
+ "invalid-url": "invalid-url";
4480
4497
  "memory-pressure": "memory-pressure";
4481
4498
  "off-origin": "off-origin";
4499
+ "origin-backpressure": "origin-backpressure";
4482
4500
  "queue-safety-limit": "queue-safety-limit";
4501
+ "query-variant-limit": "query-variant-limit";
4502
+ "robots-disallowed": "robots-disallowed";
4483
4503
  "robots-uncertain": "robots-uncertain";
4484
4504
  "legacy-unclassified": "legacy-unclassified";
4485
4505
  }>;
@@ -4751,6 +4771,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4751
4771
  source: z.ZodEnum<{
4752
4772
  environment: "environment";
4753
4773
  "playwright-cache": "playwright-cache";
4774
+ "agent-browser-cache": "agent-browser-cache";
4754
4775
  system: "system";
4755
4776
  }>;
4756
4777
  product: z.ZodString;
@@ -4851,10 +4872,10 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4851
4872
  raw: z.ZodString;
4852
4873
  resolved: z.ZodOptional<z.ZodString>;
4853
4874
  ignoredReason: z.ZodOptional<z.ZodEnum<{
4875
+ "invalid-url": "invalid-url";
4854
4876
  "outside-head": "outside-head";
4855
4877
  "alternate-qualifier": "alternate-qualifier";
4856
4878
  fragment: "fragment";
4857
- "invalid-url": "invalid-url";
4858
4879
  "non-http-url": "non-http-url";
4859
4880
  }>>;
4860
4881
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -5786,15 +5807,17 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5786
5807
  skippedUrls: z.ZodNumber;
5787
5808
  skipReasons: z.ZodArray<z.ZodObject<{
5788
5809
  reason: z.ZodEnum<{
5789
- "invalid-url": "invalid-url";
5790
- "robots-disallowed": "robots-disallowed";
5791
- "origin-backpressure": "origin-backpressure";
5792
5810
  "asset-url": "asset-url";
5811
+ "cdn-utility-url": "cdn-utility-url";
5793
5812
  "configured-exclusion": "configured-exclusion";
5794
5813
  "duplicate-normalization": "duplicate-normalization";
5814
+ "invalid-url": "invalid-url";
5795
5815
  "memory-pressure": "memory-pressure";
5796
5816
  "off-origin": "off-origin";
5817
+ "origin-backpressure": "origin-backpressure";
5797
5818
  "queue-safety-limit": "queue-safety-limit";
5819
+ "query-variant-limit": "query-variant-limit";
5820
+ "robots-disallowed": "robots-disallowed";
5798
5821
  "robots-uncertain": "robots-uncertain";
5799
5822
  "legacy-unclassified": "legacy-unclassified";
5800
5823
  }>;
@@ -6066,6 +6089,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6066
6089
  source: z.ZodEnum<{
6067
6090
  environment: "environment";
6068
6091
  "playwright-cache": "playwright-cache";
6092
+ "agent-browser-cache": "agent-browser-cache";
6069
6093
  system: "system";
6070
6094
  }>;
6071
6095
  product: z.ZodString;
@@ -6166,10 +6190,10 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6166
6190
  raw: z.ZodString;
6167
6191
  resolved: z.ZodOptional<z.ZodString>;
6168
6192
  ignoredReason: z.ZodOptional<z.ZodEnum<{
6193
+ "invalid-url": "invalid-url";
6169
6194
  "outside-head": "outside-head";
6170
6195
  "alternate-qualifier": "alternate-qualifier";
6171
6196
  fragment: "fragment";
6172
- "invalid-url": "invalid-url";
6173
6197
  "non-http-url": "non-http-url";
6174
6198
  }>>;
6175
6199
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -7101,15 +7125,17 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7101
7125
  skippedUrls: z.ZodNumber;
7102
7126
  skipReasons: z.ZodArray<z.ZodObject<{
7103
7127
  reason: z.ZodEnum<{
7104
- "invalid-url": "invalid-url";
7105
- "robots-disallowed": "robots-disallowed";
7106
- "origin-backpressure": "origin-backpressure";
7107
7128
  "asset-url": "asset-url";
7129
+ "cdn-utility-url": "cdn-utility-url";
7108
7130
  "configured-exclusion": "configured-exclusion";
7109
7131
  "duplicate-normalization": "duplicate-normalization";
7132
+ "invalid-url": "invalid-url";
7110
7133
  "memory-pressure": "memory-pressure";
7111
7134
  "off-origin": "off-origin";
7135
+ "origin-backpressure": "origin-backpressure";
7112
7136
  "queue-safety-limit": "queue-safety-limit";
7137
+ "query-variant-limit": "query-variant-limit";
7138
+ "robots-disallowed": "robots-disallowed";
7113
7139
  "robots-uncertain": "robots-uncertain";
7114
7140
  "legacy-unclassified": "legacy-unclassified";
7115
7141
  }>;
@@ -7381,6 +7407,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7381
7407
  source: z.ZodEnum<{
7382
7408
  environment: "environment";
7383
7409
  "playwright-cache": "playwright-cache";
7410
+ "agent-browser-cache": "agent-browser-cache";
7384
7411
  system: "system";
7385
7412
  }>;
7386
7413
  product: z.ZodString;
@@ -7481,10 +7508,10 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7481
7508
  raw: z.ZodString;
7482
7509
  resolved: z.ZodOptional<z.ZodString>;
7483
7510
  ignoredReason: z.ZodOptional<z.ZodEnum<{
7511
+ "invalid-url": "invalid-url";
7484
7512
  "outside-head": "outside-head";
7485
7513
  "alternate-qualifier": "alternate-qualifier";
7486
7514
  fragment: "fragment";
7487
- "invalid-url": "invalid-url";
7488
7515
  "non-http-url": "non-http-url";
7489
7516
  }>>;
7490
7517
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -8418,15 +8445,17 @@ export declare const crawlerSchemas: {
8418
8445
  skippedUrls: z.ZodNumber;
8419
8446
  skipReasons: z.ZodArray<z.ZodObject<{
8420
8447
  reason: z.ZodEnum<{
8421
- "invalid-url": "invalid-url";
8422
- "robots-disallowed": "robots-disallowed";
8423
- "origin-backpressure": "origin-backpressure";
8424
8448
  "asset-url": "asset-url";
8449
+ "cdn-utility-url": "cdn-utility-url";
8425
8450
  "configured-exclusion": "configured-exclusion";
8426
8451
  "duplicate-normalization": "duplicate-normalization";
8452
+ "invalid-url": "invalid-url";
8427
8453
  "memory-pressure": "memory-pressure";
8428
8454
  "off-origin": "off-origin";
8455
+ "origin-backpressure": "origin-backpressure";
8429
8456
  "queue-safety-limit": "queue-safety-limit";
8457
+ "query-variant-limit": "query-variant-limit";
8458
+ "robots-disallowed": "robots-disallowed";
8430
8459
  "robots-uncertain": "robots-uncertain";
8431
8460
  "legacy-unclassified": "legacy-unclassified";
8432
8461
  }>;
@@ -8698,6 +8727,7 @@ export declare const crawlerSchemas: {
8698
8727
  source: z.ZodEnum<{
8699
8728
  environment: "environment";
8700
8729
  "playwright-cache": "playwright-cache";
8730
+ "agent-browser-cache": "agent-browser-cache";
8701
8731
  system: "system";
8702
8732
  }>;
8703
8733
  product: z.ZodString;
@@ -8798,10 +8828,10 @@ export declare const crawlerSchemas: {
8798
8828
  raw: z.ZodString;
8799
8829
  resolved: z.ZodOptional<z.ZodString>;
8800
8830
  ignoredReason: z.ZodOptional<z.ZodEnum<{
8831
+ "invalid-url": "invalid-url";
8801
8832
  "outside-head": "outside-head";
8802
8833
  "alternate-qualifier": "alternate-qualifier";
8803
8834
  fragment: "fragment";
8804
- "invalid-url": "invalid-url";
8805
8835
  "non-http-url": "non-http-url";
8806
8836
  }>>;
8807
8837
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -9733,15 +9763,17 @@ export declare const crawlerSchemas: {
9733
9763
  skippedUrls: z.ZodNumber;
9734
9764
  skipReasons: z.ZodArray<z.ZodObject<{
9735
9765
  reason: z.ZodEnum<{
9736
- "invalid-url": "invalid-url";
9737
- "robots-disallowed": "robots-disallowed";
9738
- "origin-backpressure": "origin-backpressure";
9739
9766
  "asset-url": "asset-url";
9767
+ "cdn-utility-url": "cdn-utility-url";
9740
9768
  "configured-exclusion": "configured-exclusion";
9741
9769
  "duplicate-normalization": "duplicate-normalization";
9770
+ "invalid-url": "invalid-url";
9742
9771
  "memory-pressure": "memory-pressure";
9743
9772
  "off-origin": "off-origin";
9773
+ "origin-backpressure": "origin-backpressure";
9744
9774
  "queue-safety-limit": "queue-safety-limit";
9775
+ "query-variant-limit": "query-variant-limit";
9776
+ "robots-disallowed": "robots-disallowed";
9745
9777
  "robots-uncertain": "robots-uncertain";
9746
9778
  "legacy-unclassified": "legacy-unclassified";
9747
9779
  }>;
@@ -10013,6 +10045,7 @@ export declare const crawlerSchemas: {
10013
10045
  source: z.ZodEnum<{
10014
10046
  environment: "environment";
10015
10047
  "playwright-cache": "playwright-cache";
10048
+ "agent-browser-cache": "agent-browser-cache";
10016
10049
  system: "system";
10017
10050
  }>;
10018
10051
  product: z.ZodString;
@@ -10113,10 +10146,10 @@ export declare const crawlerSchemas: {
10113
10146
  raw: z.ZodString;
10114
10147
  resolved: z.ZodOptional<z.ZodString>;
10115
10148
  ignoredReason: z.ZodOptional<z.ZodEnum<{
10149
+ "invalid-url": "invalid-url";
10116
10150
  "outside-head": "outside-head";
10117
10151
  "alternate-qualifier": "alternate-qualifier";
10118
10152
  fragment: "fragment";
10119
- "invalid-url": "invalid-url";
10120
10153
  "non-http-url": "non-http-url";
10121
10154
  }>>;
10122
10155
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -11048,15 +11081,17 @@ export declare const crawlerSchemas: {
11048
11081
  skippedUrls: z.ZodNumber;
11049
11082
  skipReasons: z.ZodArray<z.ZodObject<{
11050
11083
  reason: z.ZodEnum<{
11051
- "invalid-url": "invalid-url";
11052
- "robots-disallowed": "robots-disallowed";
11053
- "origin-backpressure": "origin-backpressure";
11054
11084
  "asset-url": "asset-url";
11085
+ "cdn-utility-url": "cdn-utility-url";
11055
11086
  "configured-exclusion": "configured-exclusion";
11056
11087
  "duplicate-normalization": "duplicate-normalization";
11088
+ "invalid-url": "invalid-url";
11057
11089
  "memory-pressure": "memory-pressure";
11058
11090
  "off-origin": "off-origin";
11091
+ "origin-backpressure": "origin-backpressure";
11059
11092
  "queue-safety-limit": "queue-safety-limit";
11093
+ "query-variant-limit": "query-variant-limit";
11094
+ "robots-disallowed": "robots-disallowed";
11060
11095
  "robots-uncertain": "robots-uncertain";
11061
11096
  "legacy-unclassified": "legacy-unclassified";
11062
11097
  }>;
@@ -11328,6 +11363,7 @@ export declare const crawlerSchemas: {
11328
11363
  source: z.ZodEnum<{
11329
11364
  environment: "environment";
11330
11365
  "playwright-cache": "playwright-cache";
11366
+ "agent-browser-cache": "agent-browser-cache";
11331
11367
  system: "system";
11332
11368
  }>;
11333
11369
  product: z.ZodString;
@@ -11428,10 +11464,10 @@ export declare const crawlerSchemas: {
11428
11464
  raw: z.ZodString;
11429
11465
  resolved: z.ZodOptional<z.ZodString>;
11430
11466
  ignoredReason: z.ZodOptional<z.ZodEnum<{
11467
+ "invalid-url": "invalid-url";
11431
11468
  "outside-head": "outside-head";
11432
11469
  "alternate-qualifier": "alternate-qualifier";
11433
11470
  fragment: "fragment";
11434
- "invalid-url": "invalid-url";
11435
11471
  "non-http-url": "non-http-url";
11436
11472
  }>>;
11437
11473
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -12767,6 +12803,7 @@ export declare const crawlerSchemas: {
12767
12803
  source: z.ZodEnum<{
12768
12804
  environment: "environment";
12769
12805
  "playwright-cache": "playwright-cache";
12806
+ "agent-browser-cache": "agent-browser-cache";
12770
12807
  system: "system";
12771
12808
  }>;
12772
12809
  product: z.ZodString;
@@ -12867,10 +12904,10 @@ export declare const crawlerSchemas: {
12867
12904
  raw: z.ZodString;
12868
12905
  resolved: z.ZodOptional<z.ZodString>;
12869
12906
  ignoredReason: z.ZodOptional<z.ZodEnum<{
12907
+ "invalid-url": "invalid-url";
12870
12908
  "outside-head": "outside-head";
12871
12909
  "alternate-qualifier": "alternate-qualifier";
12872
12910
  fragment: "fragment";
12873
- "invalid-url": "invalid-url";
12874
12911
  "non-http-url": "non-http-url";
12875
12912
  }>>;
12876
12913
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -13291,15 +13328,17 @@ export declare const crawlerJsonSchemas: {
13291
13328
  skippedUrls: z.ZodNumber;
13292
13329
  skipReasons: z.ZodArray<z.ZodObject<{
13293
13330
  reason: z.ZodEnum<{
13294
- "invalid-url": "invalid-url";
13295
- "robots-disallowed": "robots-disallowed";
13296
- "origin-backpressure": "origin-backpressure";
13297
13331
  "asset-url": "asset-url";
13332
+ "cdn-utility-url": "cdn-utility-url";
13298
13333
  "configured-exclusion": "configured-exclusion";
13299
13334
  "duplicate-normalization": "duplicate-normalization";
13335
+ "invalid-url": "invalid-url";
13300
13336
  "memory-pressure": "memory-pressure";
13301
13337
  "off-origin": "off-origin";
13338
+ "origin-backpressure": "origin-backpressure";
13302
13339
  "queue-safety-limit": "queue-safety-limit";
13340
+ "query-variant-limit": "query-variant-limit";
13341
+ "robots-disallowed": "robots-disallowed";
13303
13342
  "robots-uncertain": "robots-uncertain";
13304
13343
  "legacy-unclassified": "legacy-unclassified";
13305
13344
  }>;
@@ -13571,6 +13610,7 @@ export declare const crawlerJsonSchemas: {
13571
13610
  source: z.ZodEnum<{
13572
13611
  environment: "environment";
13573
13612
  "playwright-cache": "playwright-cache";
13613
+ "agent-browser-cache": "agent-browser-cache";
13574
13614
  system: "system";
13575
13615
  }>;
13576
13616
  product: z.ZodString;
@@ -13671,10 +13711,10 @@ export declare const crawlerJsonSchemas: {
13671
13711
  raw: z.ZodString;
13672
13712
  resolved: z.ZodOptional<z.ZodString>;
13673
13713
  ignoredReason: z.ZodOptional<z.ZodEnum<{
13714
+ "invalid-url": "invalid-url";
13674
13715
  "outside-head": "outside-head";
13675
13716
  "alternate-qualifier": "alternate-qualifier";
13676
13717
  fragment: "fragment";
13677
- "invalid-url": "invalid-url";
13678
13718
  "non-http-url": "non-http-url";
13679
13719
  }>>;
13680
13720
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -14606,15 +14646,17 @@ export declare const crawlerJsonSchemas: {
14606
14646
  skippedUrls: z.ZodNumber;
14607
14647
  skipReasons: z.ZodArray<z.ZodObject<{
14608
14648
  reason: z.ZodEnum<{
14609
- "invalid-url": "invalid-url";
14610
- "robots-disallowed": "robots-disallowed";
14611
- "origin-backpressure": "origin-backpressure";
14612
14649
  "asset-url": "asset-url";
14650
+ "cdn-utility-url": "cdn-utility-url";
14613
14651
  "configured-exclusion": "configured-exclusion";
14614
14652
  "duplicate-normalization": "duplicate-normalization";
14653
+ "invalid-url": "invalid-url";
14615
14654
  "memory-pressure": "memory-pressure";
14616
14655
  "off-origin": "off-origin";
14656
+ "origin-backpressure": "origin-backpressure";
14617
14657
  "queue-safety-limit": "queue-safety-limit";
14658
+ "query-variant-limit": "query-variant-limit";
14659
+ "robots-disallowed": "robots-disallowed";
14618
14660
  "robots-uncertain": "robots-uncertain";
14619
14661
  "legacy-unclassified": "legacy-unclassified";
14620
14662
  }>;
@@ -14886,6 +14928,7 @@ export declare const crawlerJsonSchemas: {
14886
14928
  source: z.ZodEnum<{
14887
14929
  environment: "environment";
14888
14930
  "playwright-cache": "playwright-cache";
14931
+ "agent-browser-cache": "agent-browser-cache";
14889
14932
  system: "system";
14890
14933
  }>;
14891
14934
  product: z.ZodString;
@@ -14986,10 +15029,10 @@ export declare const crawlerJsonSchemas: {
14986
15029
  raw: z.ZodString;
14987
15030
  resolved: z.ZodOptional<z.ZodString>;
14988
15031
  ignoredReason: z.ZodOptional<z.ZodEnum<{
15032
+ "invalid-url": "invalid-url";
14989
15033
  "outside-head": "outside-head";
14990
15034
  "alternate-qualifier": "alternate-qualifier";
14991
15035
  fragment: "fragment";
14992
- "invalid-url": "invalid-url";
14993
15036
  "non-http-url": "non-http-url";
14994
15037
  }>>;
14995
15038
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -15921,15 +15964,17 @@ export declare const crawlerJsonSchemas: {
15921
15964
  skippedUrls: z.ZodNumber;
15922
15965
  skipReasons: z.ZodArray<z.ZodObject<{
15923
15966
  reason: z.ZodEnum<{
15924
- "invalid-url": "invalid-url";
15925
- "robots-disallowed": "robots-disallowed";
15926
- "origin-backpressure": "origin-backpressure";
15927
15967
  "asset-url": "asset-url";
15968
+ "cdn-utility-url": "cdn-utility-url";
15928
15969
  "configured-exclusion": "configured-exclusion";
15929
15970
  "duplicate-normalization": "duplicate-normalization";
15971
+ "invalid-url": "invalid-url";
15930
15972
  "memory-pressure": "memory-pressure";
15931
15973
  "off-origin": "off-origin";
15974
+ "origin-backpressure": "origin-backpressure";
15932
15975
  "queue-safety-limit": "queue-safety-limit";
15976
+ "query-variant-limit": "query-variant-limit";
15977
+ "robots-disallowed": "robots-disallowed";
15933
15978
  "robots-uncertain": "robots-uncertain";
15934
15979
  "legacy-unclassified": "legacy-unclassified";
15935
15980
  }>;
@@ -16201,6 +16246,7 @@ export declare const crawlerJsonSchemas: {
16201
16246
  source: z.ZodEnum<{
16202
16247
  environment: "environment";
16203
16248
  "playwright-cache": "playwright-cache";
16249
+ "agent-browser-cache": "agent-browser-cache";
16204
16250
  system: "system";
16205
16251
  }>;
16206
16252
  product: z.ZodString;
@@ -16301,10 +16347,10 @@ export declare const crawlerJsonSchemas: {
16301
16347
  raw: z.ZodString;
16302
16348
  resolved: z.ZodOptional<z.ZodString>;
16303
16349
  ignoredReason: z.ZodOptional<z.ZodEnum<{
16350
+ "invalid-url": "invalid-url";
16304
16351
  "outside-head": "outside-head";
16305
16352
  "alternate-qualifier": "alternate-qualifier";
16306
16353
  fragment: "fragment";
16307
- "invalid-url": "invalid-url";
16308
16354
  "non-http-url": "non-http-url";
16309
16355
  }>>;
16310
16356
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -17640,6 +17686,7 @@ export declare const crawlerJsonSchemas: {
17640
17686
  source: z.ZodEnum<{
17641
17687
  environment: "environment";
17642
17688
  "playwright-cache": "playwright-cache";
17689
+ "agent-browser-cache": "agent-browser-cache";
17643
17690
  system: "system";
17644
17691
  }>;
17645
17692
  product: z.ZodString;
@@ -17740,10 +17787,10 @@ export declare const crawlerJsonSchemas: {
17740
17787
  raw: z.ZodString;
17741
17788
  resolved: z.ZodOptional<z.ZodString>;
17742
17789
  ignoredReason: z.ZodOptional<z.ZodEnum<{
17790
+ "invalid-url": "invalid-url";
17743
17791
  "outside-head": "outside-head";
17744
17792
  "alternate-qualifier": "alternate-qualifier";
17745
17793
  fragment: "fragment";
17746
- "invalid-url": "invalid-url";
17747
17794
  "non-http-url": "non-http-url";
17748
17795
  }>>;
17749
17796
  streamedMetadata: z.ZodOptional<z.ZodLiteral<true>>;
@@ -18175,9 +18222,9 @@ export type ProviderId = z.infer<typeof providerIdSchema>;
18175
18222
  export type ExternalServiceId = string;
18176
18223
  export declare const providerCapabilitySchema: z.ZodEnum<{
18177
18224
  "local-search": "local-search";
18178
- "serp-snapshot": "serp-snapshot";
18179
18225
  "keyword-metrics": "keyword-metrics";
18180
18226
  "keyword-discovery": "keyword-discovery";
18227
+ "serp-snapshot": "serp-snapshot";
18181
18228
  "domain-overview": "domain-overview";
18182
18229
  "ranked-keywords": "ranked-keywords";
18183
18230
  "relevant-pages": "relevant-pages";
@@ -18338,6 +18385,8 @@ type ResolvedCrawlSiteDependencies = {
18338
18385
  fetchLandingPageValues: typeof fetchLandingPageValues;
18339
18386
  landingValueForUrl: typeof landingValueForUrl;
18340
18387
  now: () => Date;
18388
+ /** Waits out a rate-limit cool-down. Tests inject a zero delay. */
18389
+ sleep: (ms: number, signal?: AbortSignal) => Promise<void>;
18341
18390
  memoryUsage: () => Pick<NodeJS.MemoryUsage, 'rss' | 'heapUsed' | 'external'>;
18342
18391
  totalMemory: () => number;
18343
18392
  };
@@ -21616,6 +21665,7 @@ type WeekSite = {
21616
21665
  previous: number;
21617
21666
  } | null;
21618
21667
  opportunities?: WeekOpportunities | null;
21668
+ google_updates?: WeekGoogleUpdate[];
21619
21669
  measured?: {
21620
21670
  total: number;
21621
21671
  items: (IssueMeasure & {
@@ -21653,6 +21703,18 @@ type WeekData = {
21653
21703
  account: string;
21654
21704
  sites: WeekSite[];
21655
21705
  };
21706
+ type WeekGoogleUpdate = {
21707
+ name: string;
21708
+ start: string;
21709
+ end: string | null;
21710
+ ready: boolean;
21711
+ result: {
21712
+ verdict: 'within-normal' | 'outside-normal' | 'not-enough-data';
21713
+ clicks: number;
21714
+ previous: number;
21715
+ days: number;
21716
+ } | null;
21717
+ };
21656
21718
  export declare const CLOUD_URL = "https://seoskill.dev";
21657
21719
  type Pending = {
21658
21720
  device: string;