seo 0.12.0 → 0.13.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
@@ -6,7 +6,7 @@ import Libsql from "libsql";
6
6
  import "htmlparser2";
7
7
  import pino from "pino";
8
8
  //#region packages/core/src/types/auth.d.ts
9
- declare const tokenSchema: z.ZodObject<{
9
+ export declare const tokenSchema: z.ZodObject<{
10
10
  provider: z.ZodLiteral<"google">;
11
11
  account_email: z.ZodString;
12
12
  scope: z.ZodString;
@@ -20,8 +20,8 @@ declare const tokenSchema: z.ZodObject<{
20
20
  byo: "byo";
21
21
  }>;
22
22
  }, z.core.$strip>;
23
- type StoredTokens = z.infer<typeof tokenSchema>;
24
- declare const tokenStoreSchema: z.ZodObject<{
23
+ export type StoredTokens = z.infer<typeof tokenSchema>;
24
+ export declare const tokenStoreSchema: z.ZodObject<{
25
25
  version: z.ZodLiteral<2>;
26
26
  active_account: z.ZodString;
27
27
  accounts: z.ZodArray<z.ZodObject<{
@@ -39,18 +39,18 @@ declare const tokenStoreSchema: z.ZodObject<{
39
39
  }>;
40
40
  }, z.core.$strip>>;
41
41
  }, z.core.$strip>;
42
- type StoredTokenStore = z.infer<typeof tokenStoreSchema>;
42
+ export type StoredTokenStore = z.infer<typeof tokenStoreSchema>;
43
43
  //#endregion
44
44
  //#region packages/core/src/types/config.d.ts
45
- declare const providerPreferenceSchema: z.ZodEnum<{
45
+ export declare const providerPreferenceSchema: z.ZodEnum<{
46
46
  cheap: "cheap";
47
47
  authoritative: "authoritative";
48
48
  }>;
49
- declare const analyticsProviderSchema: z.ZodEnum<{
49
+ export declare const analyticsProviderSchema: z.ZodEnum<{
50
50
  google: "google";
51
51
  clicky: "clicky";
52
52
  }>;
53
- declare const analyticsConnectionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
53
+ export declare const analyticsConnectionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
54
54
  provider: z.ZodLiteral<"google">;
55
55
  propertyId: z.ZodString;
56
56
  accountEmail: z.ZodOptional<z.ZodString>;
@@ -62,7 +62,7 @@ declare const analyticsConnectionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
62
62
  providerId: z.ZodString;
63
63
  account: z.ZodRecord<z.ZodString, z.ZodString>;
64
64
  }, z.core.$strip>], "provider">;
65
- declare const configSchema: z.ZodObject<{
65
+ export declare const configSchema: z.ZodObject<{
66
66
  providers: z.ZodDefault<z.ZodObject<{
67
67
  dataForSeoLogin: z.ZodOptional<z.ZodString>;
68
68
  dataForSeoPassword: z.ZodOptional<z.ZodString>;
@@ -80,9 +80,9 @@ declare const configSchema: z.ZodObject<{
80
80
  sharedClientSecret: z.ZodOptional<z.ZodString>;
81
81
  }, z.core.$strip>>;
82
82
  }, z.core.$loose>;
83
- type AppConfig = z.infer<typeof configSchema>;
84
- type AnalyticsConnection = z.infer<typeof analyticsConnectionSchema>;
85
- type AnalyticsProvider = z.infer<typeof analyticsProviderSchema>;
83
+ export type AppConfig = z.infer<typeof configSchema>;
84
+ export type AnalyticsConnection = z.infer<typeof analyticsConnectionSchema>;
85
+ export type AnalyticsProvider = z.infer<typeof analyticsProviderSchema>;
86
86
  //#endregion
87
87
  //#region packages/core/src/extract/canonical.d.ts
88
88
  type CanonicalSource = 'html-head' | 'html-body' | 'http-header';
@@ -108,21 +108,21 @@ type CanonicalEvidence = {
108
108
  };
109
109
  //#endregion
110
110
  //#region packages/core/src/types/pages.d.ts
111
- interface GscRow {
111
+ export interface GscRow {
112
112
  keys: string[];
113
113
  clicks: number;
114
114
  impressions: number;
115
115
  ctr: number;
116
116
  position: number;
117
117
  }
118
- type CrawlerIdentity = {
118
+ export type CrawlerIdentity = {
119
119
  name: string;
120
120
  robotsToken: string;
121
121
  version: string;
122
122
  userAgent: string;
123
123
  documentationUrl: string;
124
124
  };
125
- type AccessBlockEvidence = {
125
+ export type AccessBlockEvidence = {
126
126
  provider: 'cloudflare' | 'unknown';
127
127
  kind: 'challenge' | 'firewall' | 'rate-limit' | 'authentication';
128
128
  status: number;
@@ -136,7 +136,7 @@ type AccessBlockEvidence = {
136
136
  documentationUrl?: string;
137
137
  };
138
138
  };
139
- interface PageFetchResult {
139
+ export interface PageFetchResult {
140
140
  url: string;
141
141
  finalUrl: string;
142
142
  status: number;
@@ -154,7 +154,7 @@ interface PageFetchResult {
154
154
  matchedLine?: string;
155
155
  };
156
156
  }
157
- interface PageFetchDiagnostics {
157
+ export interface PageFetchDiagnostics {
158
158
  source: 'cache' | 'network' | 'rendered';
159
159
  cache: 'hit' | 'miss' | 'bypass';
160
160
  fetched: boolean;
@@ -228,8 +228,8 @@ interface PageFetchDiagnostics {
228
228
  error?: string;
229
229
  };
230
230
  }
231
- type RenderingDocumentField = 'title' | 'metaDescription' | 'canonical' | 'robots' | 'headings' | 'links' | 'content' | 'structuredData';
232
- type RenderingDocumentSnapshot = {
231
+ export type RenderingDocumentField = 'title' | 'metaDescription' | 'canonical' | 'robots' | 'headings' | 'links' | 'content' | 'structuredData';
232
+ export type RenderingDocumentSnapshot = {
233
233
  title?: string;
234
234
  metaDescription?: string;
235
235
  canonical: {
@@ -262,20 +262,20 @@ type RenderingDocumentSnapshot = {
262
262
  schemaTypes: string[];
263
263
  };
264
264
  };
265
- type RenderingDocumentDifference = {
265
+ export type RenderingDocumentDifference = {
266
266
  raw: RenderingDocumentSnapshot;
267
267
  rendered: RenderingDocumentSnapshot;
268
268
  changed: RenderingDocumentField[];
269
269
  };
270
- interface CoverageField {
270
+ export interface CoverageField {
271
271
  phraseCount: number;
272
272
  matchedTerms: string[];
273
273
  missingTerms: string[];
274
274
  termCoverage: number;
275
275
  }
276
- type QueryContentClassification = 'covered' | 'serp-framing' | 'content-gap' | 'technical-check' | 'fetch-failed';
277
- type QueryContentSignal = 'http-non-2xx' | 'http-no-content' | 'redirected' | 'fetch-incomplete' | 'exact-phrase-missing' | 'title-gap' | 'meta-description-gap' | 'h1-gap' | 'body-gap' | 'blocked' | 'meta-noindex' | 'x-robots-noindex' | 'canonical-mismatch';
278
- interface QueryContentCoverage {
276
+ export type QueryContentClassification = 'covered' | 'serp-framing' | 'content-gap' | 'technical-check' | 'fetch-failed';
277
+ export type QueryContentSignal = 'http-non-2xx' | 'http-no-content' | 'redirected' | 'fetch-incomplete' | 'exact-phrase-missing' | 'title-gap' | 'meta-description-gap' | 'h1-gap' | 'body-gap' | 'blocked' | 'meta-noindex' | 'x-robots-noindex' | 'canonical-mismatch';
278
+ export interface QueryContentCoverage {
279
279
  verifiedAt: string;
280
280
  query: string;
281
281
  url: string;
@@ -299,8 +299,8 @@ interface QueryContentCoverage {
299
299
  recommendation: string;
300
300
  summary: string;
301
301
  }
302
- type ContentExtractor = 'crawler' | 'defuddle' | 'readability';
303
- interface ContentExtractionDiagnostics {
302
+ export type ContentExtractor = 'crawler' | 'defuddle' | 'readability';
303
+ export interface ContentExtractionDiagnostics {
304
304
  requested: ContentExtractor;
305
305
  used: ContentExtractor;
306
306
  fallback: boolean;
@@ -316,9 +316,9 @@ interface ContentExtractionDiagnostics {
316
316
  truncated: boolean;
317
317
  };
318
318
  }
319
- type ExtractedLinkLocation = 'main-content' | 'navigation' | 'footer' | 'other';
320
- type GoogleRichResultAssessmentStatus = 'no-required-properties' | 'required-properties-observed' | 'missing-required-properties' | 'retired' | 'not-assessed';
321
- type GoogleRichResultAssessment = {
319
+ export type ExtractedLinkLocation = 'main-content' | 'navigation' | 'footer' | 'other';
320
+ export type GoogleRichResultAssessmentStatus = 'no-required-properties' | 'required-properties-observed' | 'missing-required-properties' | 'retired' | 'not-assessed';
321
+ export type GoogleRichResultAssessment = {
322
322
  format: 'json-ld' | 'microdata' | 'rdfa';
323
323
  block?: number;
324
324
  path: string;
@@ -330,7 +330,7 @@ type GoogleRichResultAssessment = {
330
330
  limitations: string[];
331
331
  documentationUrl: string;
332
332
  };
333
- type GoogleRichResultAssessmentSelection = {
333
+ export type GoogleRichResultAssessmentSelection = {
334
334
  limit: number;
335
335
  eligible: number;
336
336
  returned: number;
@@ -340,7 +340,7 @@ type GoogleRichResultAssessmentSelection = {
340
340
  returnedByStatus: Record<GoogleRichResultAssessmentStatus, number>;
341
341
  omittedByStatus: Record<GoogleRichResultAssessmentStatus, number>;
342
342
  };
343
- interface ExtractedPage {
343
+ export interface ExtractedPage {
344
344
  url: string;
345
345
  finalUrl: string;
346
346
  title?: string;
@@ -424,7 +424,7 @@ interface ExtractedPage {
424
424
  //#endregion
425
425
  //#region packages/core/src/types/providers.d.ts
426
426
  /** Calls and units one provider used during a report run. */
427
- interface CreditUsage {
427
+ export interface CreditUsage {
428
428
  provider: string;
429
429
  units: number;
430
430
  unitLabel: string;
@@ -454,7 +454,7 @@ type RuleDefinition = {
454
454
  suggestedCommands?: string[];
455
455
  };
456
456
  };
457
- type RuleRecommendation = 'fix' | 'review';
457
+ export type RuleRecommendation = 'fix' | 'review';
458
458
  declare const RULE_DEFINITIONS: readonly [{
459
459
  readonly id: "missing_title";
460
460
  readonly title: "Title missing";
@@ -1233,17 +1233,17 @@ declare const RULE_DEFINITIONS: readonly [{
1233
1233
  readonly evidenceFields: ["report.ai.markdownCopies.broken"];
1234
1234
  };
1235
1235
  }];
1236
- type RuleId = (typeof RULE_DEFINITIONS)[number]['id'];
1237
- type RuleInfo = RuleDefinition & {
1236
+ export type RuleId = (typeof RULE_DEFINITIONS)[number]['id'];
1237
+ export type RuleInfo = RuleDefinition & {
1238
1238
  id: RuleId;
1239
1239
  recommendation: RuleRecommendation;
1240
1240
  };
1241
- type RuleCategory = RuleDefinition['category'];
1242
- type RuleSeverity = RuleDefinition['defaultSeverity'];
1243
- declare function listRules(): RuleInfo[];
1244
- declare function explainRule(ruleId: string): RuleInfo | undefined;
1245
- declare function recommendationForRule(ruleId: string): RuleRecommendation;
1246
- declare function hasRule(ruleId: string): ruleId is RuleId;
1241
+ export type RuleCategory = RuleDefinition['category'];
1242
+ export type RuleSeverity = RuleDefinition['defaultSeverity'];
1243
+ export declare function listRules(): RuleInfo[];
1244
+ export declare function explainRule(ruleId: string): RuleInfo | undefined;
1245
+ export declare function recommendationForRule(ruleId: string): RuleRecommendation;
1246
+ export declare function hasRule(ruleId: string): ruleId is RuleId;
1247
1247
  //#endregion
1248
1248
  //#region packages/core/src/brand-evidence.d.ts
1249
1249
  type BrandQueryEvidence = {
@@ -1472,7 +1472,7 @@ type SecondPageReport = {
1472
1472
  };
1473
1473
  //#endregion
1474
1474
  //#region packages/core/src/types/reports.d.ts
1475
- interface Recommendation {
1475
+ export interface Recommendation {
1476
1476
  principle: string;
1477
1477
  evidenceRef: string;
1478
1478
  action: string;
@@ -1480,7 +1480,7 @@ interface Recommendation {
1480
1480
  confidence: 'high' | 'medium' | 'low';
1481
1481
  impactEstimate?: string;
1482
1482
  }
1483
- interface AuditPageReport {
1483
+ export interface AuditPageReport {
1484
1484
  url: string;
1485
1485
  fetchedAt: string;
1486
1486
  page: ExtractedPage;
@@ -1502,7 +1502,7 @@ interface AuditPageReport {
1502
1502
  recommendations: Recommendation[];
1503
1503
  warnings: string[];
1504
1504
  }
1505
- interface QueryCluster {
1505
+ export interface QueryCluster {
1506
1506
  label: string;
1507
1507
  intent: 'informational' | 'commercial' | 'transactional' | 'navigational' | 'mixed';
1508
1508
  queries: Array<{
@@ -1542,7 +1542,7 @@ interface QueryCluster {
1542
1542
  summary?: string;
1543
1543
  recommendation?: string;
1544
1544
  }
1545
- interface CacheStats {
1545
+ export interface CacheStats {
1546
1546
  dbPath: string;
1547
1547
  sizeBytes: number;
1548
1548
  logicalSizeBytes: number;
@@ -1551,17 +1551,17 @@ interface CacheStats {
1551
1551
  }
1552
1552
  //#endregion
1553
1553
  //#region packages/core/src/analytics/providers.d.ts
1554
- type AnalyticsProviderDetails = {
1554
+ export type AnalyticsProviderDetails = {
1555
1555
  label: string;
1556
1556
  landingMetricLabel: 'sessions' | 'landing-page visits';
1557
1557
  };
1558
- declare const ANALYTICS_PROVIDER_IDS: readonly ["google", "clicky"];
1559
- declare function analyticsProviderDetails(provider: AnalyticsProvider | string): AnalyticsProviderDetails;
1560
- declare function analyticsConnectionProviderId(connection: AnalyticsConnection): string;
1561
- declare function analyticsConnectionLabel(connection: AnalyticsConnection): string;
1558
+ export declare const ANALYTICS_PROVIDER_IDS: readonly ["google", "clicky"];
1559
+ export declare function analyticsProviderDetails(provider: AnalyticsProvider | string): AnalyticsProviderDetails;
1560
+ export declare function analyticsConnectionProviderId(connection: AnalyticsConnection): string;
1561
+ export declare function analyticsConnectionLabel(connection: AnalyticsConnection): string;
1562
1562
  //#endregion
1563
1563
  //#region packages/core/src/analyze/agent-report.d.ts
1564
- type AgentFindingStatus = 'open';
1564
+ export type AgentFindingStatus = 'open';
1565
1565
  type AgentFindingBase = {
1566
1566
  id: string;
1567
1567
  status: AgentFindingStatus;
@@ -1589,14 +1589,14 @@ type AgentFindingBase = {
1589
1589
  expected: string;
1590
1590
  };
1591
1591
  };
1592
- type AgentFixFinding = AgentFindingBase & {
1592
+ export type AgentFixFinding = AgentFindingBase & {
1593
1593
  type: 'fix';
1594
1594
  fix: {
1595
1595
  instruction: string;
1596
1596
  };
1597
1597
  allowedOutcomes: Array<'fixed' | 'deferred' | 'not-needed'>;
1598
1598
  };
1599
- type AgentReviewFinding = AgentFindingBase & {
1599
+ export type AgentReviewFinding = AgentFindingBase & {
1600
1600
  type: 'review';
1601
1601
  review: {
1602
1602
  question: string;
@@ -1607,8 +1607,8 @@ type AgentReviewFinding = AgentFindingBase & {
1607
1607
  };
1608
1608
  allowedOutcomes: Array<'changed' | 'no-change' | 'deferred'>;
1609
1609
  };
1610
- type AgentFinding = AgentFixFinding | AgentReviewFinding;
1611
- type AgentFindings = {
1610
+ export type AgentFinding = AgentFixFinding | AgentReviewFinding;
1611
+ export type AgentFindings = {
1612
1612
  schemaVersion: 1;
1613
1613
  scope: 'returned-report';
1614
1614
  coverage: {
@@ -1634,7 +1634,7 @@ type AgentFindings = {
1634
1634
  sourcePaths: string[];
1635
1635
  items: AgentFinding[];
1636
1636
  };
1637
- type AgentReportInventory = {
1637
+ export type AgentReportInventory = {
1638
1638
  id: string;
1639
1639
  sourcePath: string;
1640
1640
  title: string;
@@ -1657,31 +1657,31 @@ type AgentReportInventory = {
1657
1657
  decisionStatus: 'open';
1658
1658
  }>;
1659
1659
  };
1660
- type AgentReportOptions = {
1660
+ export type AgentReportOptions = {
1661
1661
  reportId?: string;
1662
1662
  verify?: string;
1663
1663
  coverage?: AgentFindings['coverage']['state'];
1664
1664
  preferRootActions?: boolean;
1665
1665
  };
1666
1666
  type JsonRecord = Record<string, unknown>;
1667
- declare function buildAgentFindings(report: JsonRecord, options?: AgentReportOptions): {
1667
+ export declare function buildAgentFindings(report: JsonRecord, options?: AgentReportOptions): {
1668
1668
  findings: AgentFindings;
1669
1669
  inventories: AgentReportInventory[];
1670
1670
  };
1671
- declare function withAgentReportContract(report: JsonRecord, options?: AgentReportOptions): JsonRecord;
1672
- declare function agentActionsView(report: JsonRecord, options?: AgentReportOptions): JsonRecord;
1671
+ export declare function withAgentReportContract(report: JsonRecord, options?: AgentReportOptions): JsonRecord;
1672
+ export declare function agentActionsView(report: JsonRecord, options?: AgentReportOptions): JsonRecord;
1673
1673
  //#endregion
1674
1674
  //#region packages/core/src/errors.d.ts
1675
- type SeoErrorCode = 'ACCESS_DENIED' | 'AUTH_CONFIG_REQUIRED' | 'AUTH_EXPIRED' | 'AUTH_REQUIRED' | 'INSUFFICIENT_DATA' | 'INTERNAL_ERROR' | 'INVALID_INPUT' | 'OPTIONAL_PROVIDER_UNAVAILABLE' | 'PROPERTY_NOT_FOUND' | 'PROVIDER_UNAVAILABLE' | 'RATE_LIMITED';
1676
- declare class SeoError extends Error {
1675
+ export type SeoErrorCode = 'ACCESS_DENIED' | 'AUTH_CONFIG_REQUIRED' | 'AUTH_EXPIRED' | 'AUTH_REQUIRED' | 'INSUFFICIENT_DATA' | 'INTERNAL_ERROR' | 'INVALID_INPUT' | 'OPTIONAL_PROVIDER_UNAVAILABLE' | 'PROPERTY_NOT_FOUND' | 'PROVIDER_UNAVAILABLE' | 'RATE_LIMITED';
1676
+ export declare class SeoError extends Error {
1677
1677
  readonly code: SeoErrorCode;
1678
1678
  readonly exitCode: number;
1679
1679
  readonly retryable: boolean;
1680
1680
  constructor(code: SeoErrorCode, message: string);
1681
1681
  }
1682
- declare function toSeoError(error: unknown): SeoError;
1683
- declare function isSkippableReportError(error: unknown): boolean;
1684
- declare function seoErrorEnvelope(error: unknown): {
1682
+ export declare function toSeoError(error: unknown): SeoError;
1683
+ export declare function isSkippableReportError(error: unknown): boolean;
1684
+ export declare function seoErrorEnvelope(error: unknown): {
1685
1685
  ok: false;
1686
1686
  error: {
1687
1687
  code: SeoErrorCode;
@@ -1704,7 +1704,7 @@ interface Ga4AccountSummary {
1704
1704
  }
1705
1705
  //#endregion
1706
1706
  //#region packages/core/src/gsc/client/types.d.ts
1707
- interface SearchAnalyticsRequest {
1707
+ export interface SearchAnalyticsRequest {
1708
1708
  startDate: string;
1709
1709
  endDate: string;
1710
1710
  dimensions?: string[];
@@ -1723,11 +1723,11 @@ interface SearchAnalyticsRequest {
1723
1723
  }>;
1724
1724
  }>;
1725
1725
  }
1726
- type SearchAnalyticsOptions = {
1726
+ export type SearchAnalyticsOptions = {
1727
1727
  refresh?: boolean;
1728
1728
  accountEmail?: string;
1729
1729
  };
1730
- type SearchAnalyticsResult = {
1730
+ export type SearchAnalyticsResult = {
1731
1731
  rows: GscRow[];
1732
1732
  calls: number;
1733
1733
  rowsFetched: number;
@@ -1736,15 +1736,15 @@ type SearchAnalyticsResult = {
1736
1736
  * Runs one Search Analytics query and follows pagination up to `maxRows`.
1737
1737
  * The local binding adds the token store and the response cache.
1738
1738
  */
1739
- type SearchAnalyticsQuery = (site: string, body: SearchAnalyticsRequest, opts?: SearchAnalyticsOptions) => Promise<SearchAnalyticsResult>;
1740
- interface UrlInspectionRequest {
1739
+ export type SearchAnalyticsQuery = (site: string, body: SearchAnalyticsRequest, opts?: SearchAnalyticsOptions) => Promise<SearchAnalyticsResult>;
1740
+ export interface UrlInspectionRequest {
1741
1741
  siteUrl: string;
1742
1742
  inspectionUrl: string;
1743
1743
  accountEmail?: string;
1744
1744
  languageCode?: string;
1745
1745
  quotaLimit?: number;
1746
1746
  }
1747
- interface UrlInspectionResult {
1747
+ export interface UrlInspectionResult {
1748
1748
  inspectionResult?: {
1749
1749
  inspectionResultLink?: string;
1750
1750
  indexStatusResult?: {
@@ -1766,33 +1766,33 @@ interface UrlInspectionResult {
1766
1766
  }
1767
1767
  //#endregion
1768
1768
  //#region packages/core/src/google/api.d.ts
1769
- type GoogleFetch = (url: string, init?: RequestInit) => Promise<Response>;
1770
- type GoogleCallOptions = {
1769
+ export type GoogleFetch = (url: string, init?: RequestInit) => Promise<Response>;
1770
+ export type GoogleCallOptions = {
1771
1771
  signIn: string;
1772
1772
  };
1773
- declare class GoogleApiError extends SeoError {
1773
+ export declare class GoogleApiError extends SeoError {
1774
1774
  readonly status: number;
1775
1775
  constructor(code: SeoErrorCode, message: string, status: number);
1776
1776
  }
1777
- declare function bearerFetch(token: () => Promise<string> | string): GoogleFetch;
1778
- declare function googleJson<T>(gfetch: GoogleFetch, url: string, input: {
1777
+ export declare function bearerFetch(token: () => Promise<string> | string): GoogleFetch;
1778
+ export declare function googleJson<T>(gfetch: GoogleFetch, url: string, input: {
1779
1779
  body?: unknown;
1780
1780
  label: string;
1781
1781
  subject?: string;
1782
1782
  maxBytes?: number;
1783
1783
  } & GoogleCallOptions): Promise<T>;
1784
- declare function searchAnalyticsRows(gfetch: GoogleFetch, site: string, body: SearchAnalyticsRequest, options: GoogleCallOptions): Promise<SearchAnalyticsResult>;
1785
- type SearchConsoleSite = {
1784
+ export declare function searchAnalyticsRows(gfetch: GoogleFetch, site: string, body: SearchAnalyticsRequest, options: GoogleCallOptions): Promise<SearchAnalyticsResult>;
1785
+ export type SearchConsoleSite = {
1786
1786
  siteUrl: string;
1787
1787
  permissionLevel?: string;
1788
1788
  siteType?: string;
1789
1789
  };
1790
- declare function listSearchConsoleSites(gfetch: GoogleFetch, options: GoogleCallOptions): Promise<SearchConsoleSite[]>;
1791
- declare function inspectSearchConsoleUrl(gfetch: GoogleFetch, site: string, url: string, options: GoogleCallOptions & {
1790
+ export declare function listSearchConsoleSites(gfetch: GoogleFetch, options: GoogleCallOptions): Promise<SearchConsoleSite[]>;
1791
+ export declare function inspectSearchConsoleUrl(gfetch: GoogleFetch, site: string, url: string, options: GoogleCallOptions & {
1792
1792
  languageCode?: string;
1793
1793
  }): Promise<unknown>;
1794
- declare function listAnalyticsAccounts(gfetch: GoogleFetch, options: GoogleCallOptions): Promise<Ga4AccountSummary[]>;
1795
- interface Ga4DataStream {
1794
+ export declare function listAnalyticsAccounts(gfetch: GoogleFetch, options: GoogleCallOptions): Promise<Ga4AccountSummary[]>;
1795
+ export interface Ga4DataStream {
1796
1796
  name: string;
1797
1797
  displayName?: string;
1798
1798
  type?: string;
@@ -1801,11 +1801,11 @@ interface Ga4DataStream {
1801
1801
  measurementId?: string;
1802
1802
  };
1803
1803
  }
1804
- declare function listAnalyticsDataStreams(gfetch: GoogleFetch, propertyId: string, options: GoogleCallOptions): Promise<Ga4DataStream[]>;
1805
- declare function runAnalyticsReport<T = unknown>(gfetch: GoogleFetch, propertyId: string, body: unknown, options: GoogleCallOptions): Promise<T>;
1804
+ export declare function listAnalyticsDataStreams(gfetch: GoogleFetch, propertyId: string, options: GoogleCallOptions): Promise<Ga4DataStream[]>;
1805
+ export declare function runAnalyticsReport<T = unknown>(gfetch: GoogleFetch, propertyId: string, body: unknown, options: GoogleCallOptions): Promise<T>;
1806
1806
  //#endregion
1807
1807
  //#region packages/core/src/ga4/client.d.ts
1808
- interface Ga4ReportRequest {
1808
+ export interface Ga4ReportRequest {
1809
1809
  dateRanges: Array<{
1810
1810
  startDate: string;
1811
1811
  endDate: string;
@@ -1822,7 +1822,7 @@ interface Ga4ReportRequest {
1822
1822
  limit?: string | number;
1823
1823
  offset?: string | number;
1824
1824
  }
1825
- interface Ga4RunReportResult {
1825
+ export interface Ga4RunReportResult {
1826
1826
  dimensionHeaders?: Array<{
1827
1827
  name: string;
1828
1828
  }>;
@@ -1852,16 +1852,16 @@ interface Ga4RunReportResult {
1852
1852
  };
1853
1853
  propertyQuota?: unknown;
1854
1854
  }
1855
- declare function ga4RequestCanUseCache(body: Ga4ReportRequest): boolean;
1856
- declare function runGa4Report(propertyId: string, body: Ga4ReportRequest, opts?: {
1855
+ export declare function ga4RequestCanUseCache(body: Ga4ReportRequest): boolean;
1856
+ export declare function runGa4Report(propertyId: string, body: Ga4ReportRequest, opts?: {
1857
1857
  refresh?: boolean;
1858
1858
  accountEmail?: string;
1859
1859
  }): Promise<Ga4RunReportResult>;
1860
- declare function listGa4AccountSummaries(accountEmail?: string): Promise<Ga4AccountSummary[]>;
1861
- declare function listGa4DataStreams(propertyId: string, accountEmail?: string): Promise<Ga4DataStream[]>;
1862
- declare function ga4PropertyIdFromName(name: string): string;
1863
- declare function ga4RowsToObjects(result: Ga4RunReportResult): Array<Record<string, string>>;
1864
- declare function ga4ReportQualityWarnings(result: Ga4RunReportResult, label?: string): string[];
1860
+ export declare function listGa4AccountSummaries(accountEmail?: string): Promise<Ga4AccountSummary[]>;
1861
+ export declare function listGa4DataStreams(propertyId: string, accountEmail?: string): Promise<Ga4DataStream[]>;
1862
+ export declare function ga4PropertyIdFromName(name: string): string;
1863
+ export declare function ga4RowsToObjects(result: Ga4RunReportResult): Array<Record<string, string>>;
1864
+ export declare function ga4ReportQualityWarnings(result: Ga4RunReportResult, label?: string): string[];
1865
1865
  //#endregion
1866
1866
  //#region packages/core/src/analyze/ai-referrals-types.d.ts
1867
1867
  type AiReferralMetrics = {
@@ -1972,19 +1972,19 @@ type AiReferralAnalysisInput = {
1972
1972
  detail: AiReferralQueryEvidence;
1973
1973
  totalUsersEvidence: AiReferralQueryEvidence;
1974
1974
  };
1975
- declare function analyzeAiReferralRows(input: AiReferralAnalysisInput): AiReferralReport;
1975
+ export declare function analyzeAiReferralRows(input: AiReferralAnalysisInput): AiReferralReport;
1976
1976
  //#endregion
1977
1977
  //#region packages/core/src/analyze/ai-referrals-query.d.ts
1978
- declare function sessionSourceInListFilter(values: string[]): unknown;
1978
+ export declare function sessionSourceInListFilter(values: string[]): unknown;
1979
1979
  //#endregion
1980
1980
  //#region packages/core/src/analyze/ai-referrals-sources.d.ts
1981
- declare const AI_REFERRAL_SOURCES_VERSION: "ai-referral-sources@1";
1982
- declare const AI_REFERRAL_SOURCES: readonly AiReferralSourceDefinition[];
1983
- declare function aiReferralSourceForValue(value: string): AiReferralSourceDefinition | undefined;
1981
+ export declare const AI_REFERRAL_SOURCES_VERSION: "ai-referral-sources@1";
1982
+ export declare const AI_REFERRAL_SOURCES: readonly AiReferralSourceDefinition[];
1983
+ export declare function aiReferralSourceForValue(value: string): AiReferralSourceDefinition | undefined;
1984
1984
  //#endregion
1985
1985
  //#region packages/core/src/analyze/ai-referrals.d.ts
1986
1986
  type RunGa4Report = typeof runGa4Report;
1987
- declare function aiReferralsReport(input: {
1987
+ export declare function aiReferralsReport(input: {
1988
1988
  property: string;
1989
1989
  startDate?: string;
1990
1990
  endDate?: string;
@@ -2066,23 +2066,23 @@ declare function fetchPlain(url: string, refresh: boolean | undefined, timeoutMs
2066
2066
  * One renderer owns one browser process and a bounded number of isolated
2067
2067
  * contexts. Create it once for a crawl, then close it after the crawl exits.
2068
2068
  */
2069
- declare function createPageRenderer(input?: {
2069
+ export declare function createPageRenderer(input?: {
2070
2070
  concurrency?: number;
2071
2071
  }): PageRenderer;
2072
2072
  //#endregion
2073
2073
  //#region packages/core/src/fetch/page-fetcher/status-probe.d.ts
2074
- declare function fetchPageStatus(url: string, opts?: FetchPageOptions): Promise<PageFetchResult>;
2074
+ export declare function fetchPageStatus(url: string, opts?: FetchPageOptions): Promise<PageFetchResult>;
2075
2075
  //#endregion
2076
2076
  //#region packages/core/src/fetch/page-fetcher.d.ts
2077
- type FetchPageDependencies = {
2077
+ export type FetchPageDependencies = {
2078
2078
  fetchPlain?: typeof fetchPlain;
2079
2079
  createPageRenderer?: typeof createPageRenderer;
2080
2080
  };
2081
- declare function normalizeJavaScriptRenderingMode(input: JavaScriptRenderingInput | undefined): JavaScriptRenderingMode;
2082
- declare function fetchPage(url: string, opts?: FetchPageOptions, dependencies?: FetchPageDependencies): Promise<PageFetchResult>;
2081
+ export declare function normalizeJavaScriptRenderingMode(input: JavaScriptRenderingInput | undefined): JavaScriptRenderingMode;
2082
+ export declare function fetchPage(url: string, opts?: FetchPageOptions, dependencies?: FetchPageDependencies): Promise<PageFetchResult>;
2083
2083
  //#endregion
2084
2084
  //#region packages/core/src/gsc/client/inspection.d.ts
2085
- declare function urlInspectionQuota(input: {
2085
+ export declare function urlInspectionQuota(input: {
2086
2086
  siteUrl: string;
2087
2087
  accountEmail?: string;
2088
2088
  }): Promise<{
@@ -2090,51 +2090,51 @@ declare function urlInspectionQuota(input: {
2090
2090
  limit: number;
2091
2091
  resetAt: string;
2092
2092
  }>;
2093
- declare function inspectUrl(input: UrlInspectionRequest): Promise<UrlInspectionResult>;
2093
+ export declare function inspectUrl(input: UrlInspectionRequest): Promise<UrlInspectionResult>;
2094
2094
  //#endregion
2095
2095
  //#region packages/core/src/gsc/client/search-analytics.d.ts
2096
- type PageSearchMetrics = {
2096
+ export type PageSearchMetrics = {
2097
2097
  clicks: number;
2098
2098
  impressions: number;
2099
2099
  ctr: number;
2100
2100
  position: number;
2101
2101
  };
2102
- type PageTopQuery = PageSearchMetrics & {
2102
+ export type PageTopQuery = PageSearchMetrics & {
2103
2103
  query: string;
2104
2104
  };
2105
- type SearchDateWindow = {
2105
+ export type SearchDateWindow = {
2106
2106
  startDate: string;
2107
2107
  endDate: string;
2108
2108
  };
2109
- type SearchPageBatch<T> = {
2109
+ export type SearchPageBatch<T> = {
2110
2110
  values: Map<string, T>;
2111
2111
  returnedRows: number;
2112
2112
  retainedRowLimit: number;
2113
2113
  retainedRowLimitReached: boolean;
2114
2114
  };
2115
- declare function querySearchAnalytics(site: string, body: SearchAnalyticsRequest, opts?: SearchAnalyticsOptions): Promise<SearchAnalyticsResult>;
2116
- declare function queryPageMetrics(site: string, pageUrl: string, days?: number): Promise<PageSearchMetrics | undefined>;
2117
- declare function queryPagesMetrics(site: string, pageUrls: string[], days?: number): Promise<Map<string, PageSearchMetrics>>;
2118
- declare function queryPagesMetricsBatch(site: string, pageUrls: string[], range?: number | SearchDateWindow): Promise<SearchPageBatch<PageSearchMetrics>>;
2119
- declare function queryPageTopQuery(site: string, pageUrl: string, days?: number): Promise<PageTopQuery | undefined>;
2120
- declare function queryPagesTopQueries(site: string, pageUrls: string[], days?: number): Promise<Map<string, PageTopQuery>>;
2121
- declare function queryPagesTopQueriesBatch(site: string, pageUrls: string[], range?: number | SearchDateWindow): Promise<SearchPageBatch<PageTopQuery>>;
2115
+ export declare function querySearchAnalytics(site: string, body: SearchAnalyticsRequest, opts?: SearchAnalyticsOptions): Promise<SearchAnalyticsResult>;
2116
+ export declare function queryPageMetrics(site: string, pageUrl: string, days?: number): Promise<PageSearchMetrics | undefined>;
2117
+ export declare function queryPagesMetrics(site: string, pageUrls: string[], days?: number): Promise<Map<string, PageSearchMetrics>>;
2118
+ export declare function queryPagesMetricsBatch(site: string, pageUrls: string[], range?: number | SearchDateWindow): Promise<SearchPageBatch<PageSearchMetrics>>;
2119
+ export declare function queryPageTopQuery(site: string, pageUrl: string, days?: number): Promise<PageTopQuery | undefined>;
2120
+ export declare function queryPagesTopQueries(site: string, pageUrls: string[], days?: number): Promise<Map<string, PageTopQuery>>;
2121
+ export declare function queryPagesTopQueriesBatch(site: string, pageUrls: string[], range?: number | SearchDateWindow): Promise<SearchPageBatch<PageTopQuery>>;
2122
2122
  //#endregion
2123
2123
  //#region packages/core/src/gsc/client/sites.d.ts
2124
- declare function listSites(_refresh?: boolean, accountEmail?: string): Promise<Array<{
2124
+ export declare function listSites(_refresh?: boolean, accountEmail?: string): Promise<Array<{
2125
2125
  siteUrl: string;
2126
2126
  permissionLevel?: string;
2127
2127
  siteType?: string;
2128
2128
  }>>;
2129
2129
  //#endregion
2130
2130
  //#region packages/core/src/analyze/audit-page.d.ts
2131
- declare const AUDIT_PAGE_RULE_IDS: readonly ["missing_title", "title_too_wide", "h1_missing", "canonical_invalid", "canonical_conflict", "canonical_multiple", "canonical_outside_head", "canonical_streamed_in_body", "canonical_mismatch"];
2132
- type AuditPageDependencies = {
2131
+ export declare const AUDIT_PAGE_RULE_IDS: readonly ["missing_title", "title_too_wide", "h1_missing", "canonical_invalid", "canonical_conflict", "canonical_multiple", "canonical_outside_head", "canonical_streamed_in_body", "canonical_mismatch"];
2132
+ export type AuditPageDependencies = {
2133
2133
  fetchPage: typeof fetchPage;
2134
2134
  queryPageMetrics: typeof queryPageMetrics;
2135
2135
  now: () => Date;
2136
2136
  };
2137
- declare function auditPage(input: {
2137
+ export declare function auditPage(input: {
2138
2138
  url: string;
2139
2139
  site?: string;
2140
2140
  js?: boolean | 'auto';
@@ -2144,14 +2144,14 @@ declare function auditPage(input: {
2144
2144
  //#endregion
2145
2145
  //#region packages/core/src/analyze/content-coverage-analysis.d.ts
2146
2146
  /** Fetches one page. The local binding uses the cached page fetcher. */
2147
- type PageFetcher = (url: string, options?: FetchPageOptions) => Promise<PageFetchResult>;
2147
+ export type PageFetcher = (url: string, options?: FetchPageOptions) => Promise<PageFetchResult>;
2148
2148
  /** Extracts page fields from a fetched page. */
2149
- type PageExtractor = (fetched: PageFetchResult, extractor?: ContentExtractor) => Promise<ExtractedPage>;
2150
- declare function normalizeForCoverage(value: string): string;
2151
- declare function measureCoverage(query: string, text?: string): CoverageField;
2152
- declare function contentCoverageType(fields: QueryContentCoverage['fields']): 'content-gap' | 'serp-framing' | 'covered';
2153
- declare function contentCoverageRecommendation(coverage: QueryContentCoverage): string;
2154
- declare function queryContentCoverageFromPage(input: {
2149
+ export type PageExtractor = (fetched: PageFetchResult, extractor?: ContentExtractor) => Promise<ExtractedPage>;
2150
+ export declare function normalizeForCoverage(value: string): string;
2151
+ export declare function measureCoverage(query: string, text?: string): CoverageField;
2152
+ export declare function contentCoverageType(fields: QueryContentCoverage['fields']): 'content-gap' | 'serp-framing' | 'covered';
2153
+ export declare function contentCoverageRecommendation(coverage: QueryContentCoverage): string;
2154
+ export declare function queryContentCoverageFromPage(input: {
2155
2155
  query: string;
2156
2156
  url: string;
2157
2157
  page: ExtractedPage;
@@ -2160,8 +2160,8 @@ declare function queryContentCoverageFromPage(input: {
2160
2160
  warnings?: string[];
2161
2161
  verifiedAt?: string;
2162
2162
  }): QueryContentCoverage;
2163
- declare function queryContentFieldsFromPage(query: string, page: ExtractedPage): QueryContentCoverage['fields'];
2164
- type VerifyQueryContentInput = {
2163
+ export declare function queryContentFieldsFromPage(query: string, page: ExtractedPage): QueryContentCoverage['fields'];
2164
+ export type VerifyQueryContentInput = {
2165
2165
  query: string;
2166
2166
  url: string;
2167
2167
  js?: boolean | 'auto';
@@ -2173,7 +2173,7 @@ type VerifyQueryContentInput = {
2173
2173
  * Returns the injected page fetcher and extractor, or fails clearly when a
2174
2174
  * runtime without page access was asked to verify pages.
2175
2175
  */
2176
- declare function requirePageVerification(dependencies: {
2176
+ export declare function requirePageVerification(dependencies: {
2177
2177
  fetch?: PageFetcher;
2178
2178
  extract?: PageExtractor;
2179
2179
  }): {
@@ -2181,14 +2181,14 @@ declare function requirePageVerification(dependencies: {
2181
2181
  extract: PageExtractor;
2182
2182
  };
2183
2183
  /** Checks one query against one page. Callers inject fetch and extraction. */
2184
- type QueryContentVerifier = (input: VerifyQueryContentInput) => Promise<QueryContentCoverage>;
2185
- declare function verifyQueryContentWith(input: VerifyQueryContentInput & {
2184
+ export type QueryContentVerifier = (input: VerifyQueryContentInput) => Promise<QueryContentCoverage>;
2185
+ export declare function verifyQueryContentWith(input: VerifyQueryContentInput & {
2186
2186
  fetch: PageFetcher;
2187
2187
  extract: PageExtractor;
2188
2188
  }): Promise<QueryContentCoverage>;
2189
2189
  //#endregion
2190
2190
  //#region packages/core/src/analyze/content-coverage.d.ts
2191
- declare function verifyQueryContent(input: VerifyQueryContentInput & {
2191
+ export declare function verifyQueryContent(input: VerifyQueryContentInput & {
2192
2192
  fetch?: PageFetcher;
2193
2193
  extract?: PageExtractor;
2194
2194
  }): Promise<QueryContentCoverage>;
@@ -2352,17 +2352,17 @@ type PageOpportunityAnalysisInput = {
2352
2352
  };
2353
2353
  //#endregion
2354
2354
  //#region packages/core/src/analyze/shared.d.ts
2355
- declare function unicodeTokens(value: string): string[];
2355
+ export declare function unicodeTokens(value: string): string[];
2356
2356
  //#endregion
2357
2357
  //#region packages/core/src/analyze/opportunity-primitives.d.ts
2358
- type OpportunityBenchmarkRow = {
2358
+ export type OpportunityBenchmarkRow = {
2359
2359
  keys?: string[];
2360
2360
  clicks: number;
2361
2361
  impressions: number;
2362
2362
  ctr: number;
2363
2363
  position: number;
2364
2364
  };
2365
- type PositionBenchmark = {
2365
+ export type PositionBenchmark = {
2366
2366
  ctr: number;
2367
2367
  source: string;
2368
2368
  samplePopulation: 'positive_url_samples' | 'all_qualified_url_samples';
@@ -2372,7 +2372,7 @@ type PositionBenchmark = {
2372
2372
  urlSamples: number;
2373
2373
  positiveUrlSamples: number;
2374
2374
  };
2375
- type QueryFieldCoverage = {
2375
+ export type QueryFieldCoverage = {
2376
2376
  evaluated: boolean;
2377
2377
  reason?: string;
2378
2378
  queryTokens: string[];
@@ -2381,9 +2381,9 @@ type QueryFieldCoverage = {
2381
2381
  inH1: boolean;
2382
2382
  inOpeningCopy: boolean;
2383
2383
  };
2384
- declare function roundedPosition(position: number): number;
2385
- declare function expectedCtrForPosition(position: number): number;
2386
- declare function createCtrBenchmarkContext(rows: OpportunityBenchmarkRow[], options?: {
2384
+ export declare function roundedPosition(position: number): number;
2385
+ export declare function expectedCtrForPosition(position: number): number;
2386
+ export declare function createCtrBenchmarkContext(rows: OpportunityBenchmarkRow[], options?: {
2387
2387
  samplePopulation?: PositionBenchmark['samplePopulation'];
2388
2388
  fallbackSource?: string;
2389
2389
  }): {
@@ -2398,17 +2398,17 @@ declare function createCtrBenchmarkContext(rows: OpportunityBenchmarkRow[], opti
2398
2398
  fallbackRowScans: number;
2399
2399
  };
2400
2400
  };
2401
- declare function queryFieldCoverage(query: string, input: {
2401
+ export declare function queryFieldCoverage(query: string, input: {
2402
2402
  title?: string;
2403
2403
  meta?: string;
2404
2404
  h1?: string;
2405
2405
  opening?: string;
2406
2406
  }): QueryFieldCoverage;
2407
- declare function pageEvidenceRecommendation(input: {
2407
+ export declare function pageEvidenceRecommendation(input: {
2408
2408
  query: string;
2409
2409
  coverage: QueryFieldCoverage;
2410
2410
  }): string;
2411
- declare function queryOpportunityRecommendation(input: {
2411
+ export declare function queryOpportunityRecommendation(input: {
2412
2412
  query: string;
2413
2413
  position: number;
2414
2414
  ctr: number;
@@ -2430,7 +2430,7 @@ declare function pageTechnicalSignals(input: {
2430
2430
  }): PageTechnicalSignal[];
2431
2431
  //#endregion
2432
2432
  //#region packages/core/src/analyze/page-opportunities-analysis.d.ts
2433
- declare function analyzePageOpportunitiesFromRows(input: PageOpportunityAnalysisInput): PageOpportunityAnalysis;
2433
+ export declare function analyzePageOpportunitiesFromRows(input: PageOpportunityAnalysisInput): PageOpportunityAnalysis;
2434
2434
  //#endregion
2435
2435
  //#region packages/core/src/analyze/page-opportunities-presentation.d.ts
2436
2436
  type PageOpportunityFocus = PageOpportunityType | 'no-data';
@@ -2439,7 +2439,7 @@ type PageOpportunityFocus = PageOpportunityType | 'no-data';
2439
2439
  type SearchAnalytics$2 = typeof querySearchAnalytics;
2440
2440
  type FetchPage = typeof fetchPage;
2441
2441
  type ExtractPage = typeof extractPage;
2442
- type PageOpportunityInput = {
2442
+ export type PageOpportunityInput = {
2443
2443
  site: string;
2444
2444
  url: string;
2445
2445
  days?: number;
@@ -2451,7 +2451,7 @@ type PageOpportunityInput = {
2451
2451
  refresh?: boolean;
2452
2452
  js?: boolean | 'auto';
2453
2453
  };
2454
- type PageOpportunityReport = {
2454
+ export type PageOpportunityReport = {
2455
2455
  site: string;
2456
2456
  url: string;
2457
2457
  generatedAt: string;
@@ -2513,11 +2513,11 @@ type PageOpportunityDependencies = {
2513
2513
  extract: ExtractPage;
2514
2514
  now: () => Date;
2515
2515
  };
2516
- declare function pageOpportunitiesReport(input: PageOpportunityInput, dependencies?: PageOpportunityDependencies): Promise<PageOpportunityReport>;
2516
+ export declare function pageOpportunitiesReport(input: PageOpportunityInput, dependencies?: PageOpportunityDependencies): Promise<PageOpportunityReport>;
2517
2517
  //#endregion
2518
2518
  //#region packages/core/src/analyze/content-optimization.d.ts
2519
- type ContentOptimizationIntent = 'comparison' | 'commercial' | 'how-to' | 'definition' | 'local' | 'navigational' | 'general';
2520
- type ContentOptimizationReport = {
2519
+ export type ContentOptimizationIntent = 'comparison' | 'commercial' | 'how-to' | 'definition' | 'local' | 'navigational' | 'general';
2520
+ export type ContentOptimizationReport = {
2521
2521
  site: string;
2522
2522
  url: string;
2523
2523
  generatedAt: string;
@@ -2556,8 +2556,8 @@ type ContentOptimizationReport = {
2556
2556
  }>;
2557
2557
  caveats: string[];
2558
2558
  };
2559
- declare function contentOptimizationFromPageOpportunities(sourceReport: PageOpportunityReport): ContentOptimizationReport;
2560
- declare function contentOptimizationReport(input: {
2559
+ export declare function contentOptimizationFromPageOpportunities(sourceReport: PageOpportunityReport): ContentOptimizationReport;
2560
+ export declare function contentOptimizationReport(input: {
2561
2561
  site: string;
2562
2562
  url: string;
2563
2563
  days?: number;
@@ -2571,7 +2571,7 @@ declare function contentOptimizationReport(input: {
2571
2571
  }): Promise<ContentOptimizationReport>;
2572
2572
  //#endregion
2573
2573
  //#region packages/core/src/analyze/monitoring/types.d.ts
2574
- type CrawlPageSnapshot = {
2574
+ export type CrawlPageSnapshot = {
2575
2575
  url: string;
2576
2576
  finalUrl: string;
2577
2577
  status: number;
@@ -2747,20 +2747,20 @@ type CrawlPageSnapshot = {
2747
2747
  conversions?: number;
2748
2748
  };
2749
2749
  };
2750
- type ExternalLinkCheckState = 'available' | 'confirmed-broken' | 'transient' | 'provider-blocked' | 'rate-limited' | 'method-rejected' | 'unavailable';
2751
- type ExternalLinkCheckAttempt = {
2750
+ export type ExternalLinkCheckState = 'available' | 'confirmed-broken' | 'transient' | 'provider-blocked' | 'rate-limited' | 'method-rejected' | 'unavailable';
2751
+ export type ExternalLinkCheckAttempt = {
2752
2752
  method: 'HEAD' | 'GET';
2753
2753
  status?: number;
2754
2754
  error?: string;
2755
2755
  };
2756
- type ExternalLinkCheck = {
2756
+ export type ExternalLinkCheck = {
2757
2757
  url: string;
2758
2758
  status?: number;
2759
2759
  error?: string;
2760
2760
  state?: ExternalLinkCheckState;
2761
2761
  attempts?: ExternalLinkCheckAttempt[];
2762
2762
  };
2763
- type CrawlResponseObservation = {
2763
+ export type CrawlResponseObservation = {
2764
2764
  requestedUrl: string;
2765
2765
  outcome: 'response';
2766
2766
  finalUrl: string;
@@ -2776,7 +2776,7 @@ type CrawlResponseObservation = {
2776
2776
  extraction: 'failed';
2777
2777
  extractionError: string;
2778
2778
  });
2779
- type CrawlRequestObservation = CrawlResponseObservation | {
2779
+ export type CrawlRequestObservation = CrawlResponseObservation | {
2780
2780
  requestedUrl: string;
2781
2781
  outcome: 'skipped';
2782
2782
  durationMs?: number;
@@ -2800,18 +2800,18 @@ type CrawlRequestObservation = CrawlResponseObservation | {
2800
2800
  };
2801
2801
  //#endregion
2802
2802
  //#region packages/core/src/analyze/monitoring/sitemaps.d.ts
2803
- type SitemapInvalidLoc = {
2803
+ export type SitemapInvalidLoc = {
2804
2804
  sitemapUrl: string;
2805
2805
  kind: 'url' | 'sitemap';
2806
2806
  value: string;
2807
2807
  };
2808
- type SitemapLastmodObservation = {
2808
+ export type SitemapLastmodObservation = {
2809
2809
  sitemapUrl: string;
2810
2810
  kind: 'url' | 'sitemap';
2811
2811
  loc: string;
2812
2812
  value: string;
2813
2813
  };
2814
- type SitemapDocument = {
2814
+ export type SitemapDocument = {
2815
2815
  url: string;
2816
2816
  finalUrl?: string;
2817
2817
  redirected?: true;
@@ -2824,7 +2824,7 @@ type SitemapDocument = {
2824
2824
  root?: 'urlset' | 'sitemapindex';
2825
2825
  warning?: string;
2826
2826
  };
2827
- type SitemapFetchResult = {
2827
+ export type SitemapFetchResult = {
2828
2828
  sitemapUrl: string;
2829
2829
  dataStatus: 'complete' | 'partial';
2830
2830
  urls: string[];
@@ -2867,7 +2867,7 @@ type SitemapFetchResult = {
2867
2867
  };
2868
2868
  warnings: string[];
2869
2869
  };
2870
- type BoundedSitemapInventory = {
2870
+ export type BoundedSitemapInventory = {
2871
2871
  urls: string[];
2872
2872
  truncation: {
2873
2873
  possiblyTruncated: boolean;
@@ -2877,28 +2877,28 @@ type BoundedSitemapInventory = {
2877
2877
  limit: number;
2878
2878
  };
2879
2879
  };
2880
- declare function boundedSitemapInventory(results: Array<Pick<SitemapFetchResult, 'urls' | 'truncation'>>, limit: number): BoundedSitemapInventory;
2881
- declare function fetchSitemapUrls(input: {
2880
+ export declare function boundedSitemapInventory(results: Array<Pick<SitemapFetchResult, 'urls' | 'truncation'>>, limit: number): BoundedSitemapInventory;
2881
+ export declare function fetchSitemapUrls(input: {
2882
2882
  sitemapUrl: string;
2883
2883
  limit?: number;
2884
2884
  maxNested?: number;
2885
2885
  }): Promise<SitemapFetchResult>;
2886
2886
  //#endregion
2887
2887
  //#region packages/core/src/analyze/crawler/crawl-skip-reasons.d.ts
2888
- 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"];
2889
- type CrawlSkipReason = (typeof CRAWL_SKIP_REASONS)[number];
2890
- type CrawlSkipImpact = 'coverage-affecting' | 'non-impacting';
2891
- type CrawlSkipReasonCount = {
2888
+ 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"];
2889
+ export type CrawlSkipReason = (typeof CRAWL_SKIP_REASONS)[number];
2890
+ export type CrawlSkipImpact = 'coverage-affecting' | 'non-impacting';
2891
+ export type CrawlSkipReasonCount = {
2892
2892
  reason: CrawlSkipReason;
2893
2893
  impact: CrawlSkipImpact;
2894
2894
  count: number;
2895
2895
  };
2896
- type CrawlSkippedUrlsByImpact = {
2896
+ export type CrawlSkippedUrlsByImpact = {
2897
2897
  coverageAffecting: number;
2898
2898
  nonImpacting: number;
2899
2899
  };
2900
- declare function crawlSkipImpact(reason: CrawlSkipReason): CrawlSkipImpact;
2901
- declare function normalizeCrawlSkipReasonCounts(input: {
2900
+ export declare function crawlSkipImpact(reason: CrawlSkipReason): CrawlSkipImpact;
2901
+ export declare function normalizeCrawlSkipReasonCounts(input: {
2902
2902
  skippedUrls?: number;
2903
2903
  skipReasons?: unknown;
2904
2904
  }): {
@@ -2906,20 +2906,20 @@ declare function normalizeCrawlSkipReasonCounts(input: {
2906
2906
  skipReasons: CrawlSkipReasonCount[];
2907
2907
  skippedUrlsByImpact: CrawlSkippedUrlsByImpact;
2908
2908
  };
2909
- declare function crawlSkipReasonCountsFromRecord(input?: Partial<Record<CrawlSkipReason, number>>): CrawlSkipReasonCount[];
2909
+ export declare function crawlSkipReasonCountsFromRecord(input?: Partial<Record<CrawlSkipReason, number>>): CrawlSkipReasonCount[];
2910
2910
  //#endregion
2911
2911
  //#region packages/core/src/analyze/crawler/crawl-status.d.ts
2912
2912
  type CrawlStatusPhase = 'started' | 'url_queued' | 'url_skipped' | 'page_started' | 'page_completed' | 'page_failed' | 'page_skipped' | 'external_links_started' | 'external_links_completed' | 'cancelled' | 'completed';
2913
2913
  //#endregion
2914
2914
  //#region packages/core/src/analyze/monitoring/crawl-page.d.ts
2915
- type CrawlOneResult = {
2915
+ export type CrawlOneResult = {
2916
2916
  request?: CrawlRequestObservation;
2917
2917
  page?: CrawlPageSnapshot;
2918
2918
  urls: string[];
2919
2919
  warning?: string;
2920
2920
  };
2921
- declare function crawlOne(url: string, opts?: FetchPageOptions): Promise<CrawlOneResult>;
2922
- declare function crawlStatusOnly(url: string, opts?: FetchPageOptions): Promise<CrawlOneResult>;
2921
+ export declare function crawlOne(url: string, opts?: FetchPageOptions): Promise<CrawlOneResult>;
2922
+ export declare function crawlStatusOnly(url: string, opts?: FetchPageOptions): Promise<CrawlOneResult>;
2923
2923
  //#endregion
2924
2924
  //#region packages/core/src/analyze/crawler/site-checks.d.ts
2925
2925
  type CrawlSiteChecks = {
@@ -3017,14 +3017,14 @@ type CrawlAiSignals = {
3017
3017
  };
3018
3018
  //#endregion
3019
3019
  //#region packages/core/src/analyze/crawler/report.d.ts
3020
- type CrawlMode = 'site' | 'page' | 'list' | 'sitemap';
3021
- type CrawlStrategy = 'full' | 'health';
3022
- declare const MAX_CRAWL_PAGES = 10000;
3023
- declare const MAX_CRAWL_DEPTH = 64;
3024
- declare const MAX_CRAWL_CONCURRENCY = 16;
3025
- declare const MAX_CRAWL_TIMEOUT_MS = 120000;
3026
- type CrawlFetchRateConfig = FetchRateControls;
3027
- type CrawlConfig = {
3020
+ export type CrawlMode = 'site' | 'page' | 'list' | 'sitemap';
3021
+ export type CrawlStrategy = 'full' | 'health';
3022
+ export declare const MAX_CRAWL_PAGES = 10000;
3023
+ export declare const MAX_CRAWL_DEPTH = 64;
3024
+ export declare const MAX_CRAWL_CONCURRENCY = 16;
3025
+ export declare const MAX_CRAWL_TIMEOUT_MS = 120000;
3026
+ export type CrawlFetchRateConfig = FetchRateControls;
3027
+ export type CrawlConfig = {
3028
3028
  url: string;
3029
3029
  mode: CrawlMode;
3030
3030
  strategy: CrawlStrategy;
@@ -3043,7 +3043,7 @@ type CrawlConfig = {
3043
3043
  refresh: boolean;
3044
3044
  fetchRate: CrawlFetchRateConfig;
3045
3045
  };
3046
- type CrawlConfigInput = Omit<Partial<CrawlConfig>, 'url' | 'js'> & {
3046
+ export type CrawlConfigInput = Omit<Partial<CrawlConfig>, 'url' | 'js'> & {
3047
3047
  url: string;
3048
3048
  js?: JavaScriptRenderingInput;
3049
3049
  site?: string;
@@ -3054,7 +3054,7 @@ type CrawlConfigInput = Omit<Partial<CrawlConfig>, 'url' | 'js'> & {
3054
3054
  signal?: AbortSignal;
3055
3055
  onStatus?: CrawlStatusHandler;
3056
3056
  };
3057
- type CrawlStatusEvent = {
3057
+ export type CrawlStatusEvent = {
3058
3058
  type: 'crawl_status';
3059
3059
  phase: CrawlStatusPhase;
3060
3060
  generatedAt: string;
@@ -3075,8 +3075,8 @@ type CrawlStatusEvent = {
3075
3075
  observedInternalLinks: number;
3076
3076
  maxPages: number;
3077
3077
  };
3078
- type CrawlStatusHandler = (event: CrawlStatusEvent) => void | Promise<void>;
3079
- type CrawlIssue = {
3078
+ export type CrawlStatusHandler = (event: CrawlStatusEvent) => void | Promise<void>;
3079
+ export type CrawlIssue = {
3080
3080
  ruleId: RuleId;
3081
3081
  title: string;
3082
3082
  category: RuleCategory;
@@ -3086,7 +3086,7 @@ type CrawlIssue = {
3086
3086
  evidence?: Record<string, unknown>;
3087
3087
  searchMetrics?: CrawlPageSnapshot['searchMetrics'];
3088
3088
  };
3089
- type CrawlIssueGroup = {
3089
+ export type CrawlIssueGroup = {
3090
3090
  ruleId: RuleId;
3091
3091
  title: string;
3092
3092
  category: RuleCategory;
@@ -3094,7 +3094,7 @@ type CrawlIssueGroup = {
3094
3094
  count: number;
3095
3095
  sampleUrls: string[];
3096
3096
  };
3097
- type CrawlRunStats = {
3097
+ export type CrawlRunStats = {
3098
3098
  discoveredUrls: number;
3099
3099
  queuedUrls: number;
3100
3100
  crawledUrls: number;
@@ -3104,8 +3104,8 @@ type CrawlRunStats = {
3104
3104
  observedInternalLinks: number;
3105
3105
  pageLimitReached: boolean;
3106
3106
  };
3107
- type CrawlLinkGraph = Record<string, string[]>;
3108
- type CrawlSitemapDiscovery = {
3107
+ export type CrawlLinkGraph = Record<string, string[]>;
3108
+ export type CrawlSitemapDiscovery = {
3109
3109
  dataStatus: 'complete' | 'partial' | 'unavailable';
3110
3110
  urlsReturned: number;
3111
3111
  roots: Array<{
@@ -3120,7 +3120,7 @@ type CrawlSitemapDiscovery = {
3120
3120
  warnings: string[];
3121
3121
  }>;
3122
3122
  };
3123
- type CrawlExternalLinkVerification = {
3123
+ export type CrawlExternalLinkVerification = {
3124
3124
  dataStatus: 'complete' | 'partial' | 'unavailable';
3125
3125
  discoveredLinkOccurrences: number;
3126
3126
  retainedUrls: number;
@@ -3132,13 +3132,13 @@ type CrawlExternalLinkVerification = {
3132
3132
  outcomes?: Record<ExternalLinkCheckState, number>;
3133
3133
  warnings: string[];
3134
3134
  };
3135
- type CrawlDataSourceStatus = 'joined' | 'partial' | 'none' | 'skipped' | 'unavailable';
3136
- type CrawlDataSourceWindow = {
3135
+ export type CrawlDataSourceStatus = 'joined' | 'partial' | 'none' | 'skipped' | 'unavailable';
3136
+ export type CrawlDataSourceWindow = {
3137
3137
  startDate: string;
3138
3138
  endDate: string;
3139
3139
  days: number;
3140
3140
  };
3141
- type CrawlSearchDataSource = {
3141
+ export type CrawlSearchDataSource = {
3142
3142
  status: CrawlDataSourceStatus;
3143
3143
  window?: CrawlDataSourceWindow;
3144
3144
  totalPages: number;
@@ -3153,7 +3153,7 @@ type CrawlSearchDataSource = {
3153
3153
  retainedRowLimitReached?: boolean;
3154
3154
  warning?: string;
3155
3155
  };
3156
- type CrawlAnalyticsDataSource = {
3156
+ export type CrawlAnalyticsDataSource = {
3157
3157
  provider?: string;
3158
3158
  observedMetrics?: Array<'sessions' | 'totalUsers' | 'conversions'>;
3159
3159
  status: CrawlDataSourceStatus;
@@ -3167,11 +3167,11 @@ type CrawlAnalyticsDataSource = {
3167
3167
  retainedRowLimitReached?: boolean;
3168
3168
  warning?: string;
3169
3169
  };
3170
- type CrawlReportDataSources = {
3170
+ export type CrawlReportDataSources = {
3171
3171
  searchConsole: CrawlSearchDataSource;
3172
3172
  analytics: CrawlAnalyticsDataSource;
3173
3173
  };
3174
- type CrawlReportSummary = {
3174
+ export type CrawlReportSummary = {
3175
3175
  totalPages: number;
3176
3176
  statusOnlyPages: number;
3177
3177
  indexablePages: number;
@@ -3200,7 +3200,7 @@ type CrawlReportSummary = {
3200
3200
  byStatus: Record<string, number>;
3201
3201
  byCategory: Record<string, number>;
3202
3202
  };
3203
- type CrawlAccessSummary = {
3203
+ export type CrawlAccessSummary = {
3204
3204
  crawler: CrawlerIdentity;
3205
3205
  blockedRequests: number;
3206
3206
  providers: Partial<Record<AccessBlockEvidence['provider'], number>>;
@@ -3211,7 +3211,7 @@ type CrawlAccessSummary = {
3211
3211
  sampleLimit: number;
3212
3212
  truncated: boolean;
3213
3213
  };
3214
- type CrawlReport = {
3214
+ export type CrawlReport = {
3215
3215
  id: string;
3216
3216
  definitionId: string;
3217
3217
  site?: string;
@@ -3236,18 +3236,18 @@ type CrawlReport = {
3236
3236
  warnings: string[];
3237
3237
  caveats: string[];
3238
3238
  };
3239
- declare function normalizeCrawlConfig(input: CrawlConfigInput): CrawlConfig;
3240
- declare function assertCrawlConfigLimits(config: CrawlConfig): CrawlConfig;
3241
- declare function crawlConfigHash(config: CrawlConfigInput): string;
3242
- declare function crawlDefinitionId(input: {
3239
+ export declare function normalizeCrawlConfig(input: CrawlConfigInput): CrawlConfig;
3240
+ export declare function assertCrawlConfigLimits(config: CrawlConfig): CrawlConfig;
3241
+ export declare function crawlConfigHash(config: CrawlConfigInput): string;
3242
+ export declare function crawlDefinitionId(input: {
3243
3243
  config: CrawlConfigInput;
3244
3244
  site?: string;
3245
3245
  googleAnalyticsPropertyId?: string;
3246
3246
  analyticsConnection?: AnalyticsConnection;
3247
3247
  }): string;
3248
- declare function crawlRunId(): string;
3249
- declare function groupCrawlIssues(issues: CrawlIssue[]): CrawlIssueGroup[];
3250
- declare function summarizeCrawlReport(input: {
3248
+ export declare function crawlRunId(): string;
3249
+ export declare function groupCrawlIssues(issues: CrawlIssue[]): CrawlIssueGroup[];
3250
+ export declare function summarizeCrawlReport(input: {
3251
3251
  pages: CrawlPageSnapshot[];
3252
3252
  requests?: CrawlRequestObservation[];
3253
3253
  requestEvidenceStatus?: CrawlReport['requestEvidenceStatus'];
@@ -3256,7 +3256,7 @@ declare function summarizeCrawlReport(input: {
3256
3256
  skipReasons?: CrawlSkipReasonCount[];
3257
3257
  };
3258
3258
  }): CrawlReportSummary;
3259
- declare function createCrawlReport(input: {
3259
+ export declare function createCrawlReport(input: {
3260
3260
  id?: string;
3261
3261
  config: CrawlConfigInput;
3262
3262
  pages?: CrawlPageSnapshot[];
@@ -3279,23 +3279,23 @@ declare function createCrawlReport(input: {
3279
3279
  stats?: Partial<CrawlRunStats>;
3280
3280
  generatedAt?: string;
3281
3281
  }): CrawlReport;
3282
- declare function normalizeLoadedCrawlReport(report: CrawlReport): CrawlReport;
3282
+ export declare function normalizeLoadedCrawlReport(report: CrawlReport): CrawlReport;
3283
3283
  //#endregion
3284
3284
  //#region packages/core/src/analyze/crawler/audit.d.ts
3285
- declare function auditCrawlRequests(requests: CrawlRequestObservation[]): CrawlIssue[];
3286
- declare function auditCrawlPages(pages: CrawlPageSnapshot[], opts?: {
3285
+ export declare function auditCrawlRequests(requests: CrawlRequestObservation[]): CrawlIssue[];
3286
+ export declare function auditCrawlPages(pages: CrawlPageSnapshot[], opts?: {
3287
3287
  startUrl?: string;
3288
3288
  }): CrawlIssue[];
3289
3289
  //#endregion
3290
3290
  //#region packages/core/src/analyze/crawler/top-fixes.d.ts
3291
- type TopFixFilters = {
3291
+ export type TopFixFilters = {
3292
3292
  category?: RuleCategory | string;
3293
3293
  severity?: RuleSeverity | string;
3294
3294
  url?: string;
3295
3295
  limit?: number;
3296
3296
  recommendation?: RuleRecommendation;
3297
3297
  };
3298
- type TopFix = CrawlIssueGroup & {
3298
+ export type TopFix = CrawlIssueGroup & {
3299
3299
  recommendation: RuleRecommendation;
3300
3300
  score: number;
3301
3301
  scoreFactors: {
@@ -3319,29 +3319,29 @@ type TopFix = CrawlIssueGroup & {
3319
3319
  expected: string;
3320
3320
  };
3321
3321
  };
3322
- declare function topFixes(report: CrawlReport, filters?: TopFixFilters): TopFix[];
3323
- declare function reviewObservations(report: CrawlReport, filters?: Omit<TopFixFilters, 'recommendation'>): TopFix[];
3322
+ export declare function topFixes(report: CrawlReport, filters?: TopFixFilters): TopFix[];
3323
+ export declare function reviewObservations(report: CrawlReport, filters?: Omit<TopFixFilters, 'recommendation'>): TopFix[];
3324
3324
  //#endregion
3325
3325
  //#region packages/core/src/analyze/crawler/export.d.ts
3326
- type CrawlOutputFormat = 'pretty' | 'json' | 'csv' | 'html' | 'markdown' | 'junit';
3327
- declare function renderCrawlCsv(report: CrawlReport): string;
3328
- declare function renderCrawlPagesCsv(report: CrawlReport): string;
3329
- declare function renderCrawlPretty(report: CrawlReport, fixes?: TopFix[]): string;
3330
- declare function renderCrawlJunit(report: CrawlReport): string;
3331
- declare function renderCrawlHtml(report: CrawlReport, fixes?: TopFix[]): string;
3332
- declare function renderCrawlMarkdownTickets(report: CrawlReport, fixes?: TopFix[]): string;
3326
+ export type CrawlOutputFormat = 'pretty' | 'json' | 'csv' | 'html' | 'markdown' | 'junit';
3327
+ export declare function renderCrawlCsv(report: CrawlReport): string;
3328
+ export declare function renderCrawlPagesCsv(report: CrawlReport): string;
3329
+ export declare function renderCrawlPretty(report: CrawlReport, fixes?: TopFix[]): string;
3330
+ export declare function renderCrawlJunit(report: CrawlReport): string;
3331
+ export declare function renderCrawlHtml(report: CrawlReport, fixes?: TopFix[]): string;
3332
+ export declare function renderCrawlMarkdownTickets(report: CrawlReport, fixes?: TopFix[]): string;
3333
3333
  //#endregion
3334
3334
  //#region packages/core/src/analyze/crawler/schemas.d.ts
3335
- declare const crawlerRuleSeveritySchema: z.ZodEnum<{
3335
+ export declare const crawlerRuleSeveritySchema: z.ZodEnum<{
3336
3336
  high: "high";
3337
3337
  low: "low";
3338
3338
  medium: "medium";
3339
3339
  }>;
3340
- declare const crawlerRuleRecommendationSchema: z.ZodEnum<{
3340
+ export declare const crawlerRuleRecommendationSchema: z.ZodEnum<{
3341
3341
  fix: "fix";
3342
3342
  review: "review";
3343
3343
  }>;
3344
- declare const crawlerRuleCategorySchema: z.ZodEnum<{
3344
+ export declare const crawlerRuleCategorySchema: z.ZodEnum<{
3345
3345
  metadata: "metadata";
3346
3346
  canonical: "canonical";
3347
3347
  content: "content";
@@ -3358,10 +3358,10 @@ declare const crawlerRuleCategorySchema: z.ZodEnum<{
3358
3358
  "structured-data": "structured-data";
3359
3359
  agents: "agents";
3360
3360
  }>;
3361
- declare const crawlerRuleIdSchema: z.ZodEnum<{
3361
+ export declare const crawlerRuleIdSchema: z.ZodEnum<{
3362
3362
  [x: string]: string;
3363
3363
  }>;
3364
- declare const crawlerRuleInfoSchema: z.ZodObject<{
3364
+ export declare const crawlerRuleInfoSchema: z.ZodObject<{
3365
3365
  id: z.ZodEnum<{
3366
3366
  [x: string]: string;
3367
3367
  }>;
@@ -3401,7 +3401,7 @@ declare const crawlerRuleInfoSchema: z.ZodObject<{
3401
3401
  suggestedCommands: z.ZodOptional<z.ZodArray<z.ZodString>>;
3402
3402
  }, z.core.$strip>>;
3403
3403
  }, z.core.$strip>;
3404
- declare const crawlPageSnapshotSchema: z.ZodObject<{
3404
+ export declare const crawlPageSnapshotSchema: z.ZodObject<{
3405
3405
  url: z.ZodString;
3406
3406
  finalUrl: z.ZodString;
3407
3407
  status: z.ZodNumber;
@@ -4037,7 +4037,7 @@ declare const crawlPageSnapshotSchema: z.ZodObject<{
4037
4037
  conversions: z.ZodOptional<z.ZodNumber>;
4038
4038
  }, z.core.$strip>>;
4039
4039
  }, z.core.$strip>;
4040
- declare const crawlRequestObservationSchema: z.ZodUnion<readonly [z.ZodObject<{
4040
+ export declare const crawlRequestObservationSchema: z.ZodUnion<readonly [z.ZodObject<{
4041
4041
  requestedUrl: z.ZodString;
4042
4042
  outcome: z.ZodLiteral<"response">;
4043
4043
  finalUrl: z.ZodString;
@@ -4197,7 +4197,7 @@ declare const crawlRequestObservationSchema: z.ZodUnion<readonly [z.ZodObject<{
4197
4197
  error: z.ZodString;
4198
4198
  extraction: z.ZodLiteral<"not-applicable">;
4199
4199
  }, z.core.$strip>]>;
4200
- declare const crawlIssueSchema: z.ZodObject<{
4200
+ export declare const crawlIssueSchema: z.ZodObject<{
4201
4201
  ruleId: z.ZodEnum<{
4202
4202
  [x: string]: string;
4203
4203
  }>;
@@ -4234,7 +4234,7 @@ declare const crawlIssueSchema: z.ZodObject<{
4234
4234
  position: z.ZodNumber;
4235
4235
  }, z.core.$strip>>;
4236
4236
  }, z.core.$strip>;
4237
- declare const crawlIssueGroupSchema: z.ZodObject<{
4237
+ export declare const crawlIssueGroupSchema: z.ZodObject<{
4238
4238
  ruleId: z.ZodEnum<{
4239
4239
  [x: string]: string;
4240
4240
  }>;
@@ -4264,7 +4264,7 @@ declare const crawlIssueGroupSchema: z.ZodObject<{
4264
4264
  count: z.ZodNumber;
4265
4265
  sampleUrls: z.ZodArray<z.ZodString>;
4266
4266
  }, z.core.$strip>;
4267
- declare const crawlTopFixSchema: z.ZodObject<{
4267
+ export declare const crawlTopFixSchema: z.ZodObject<{
4268
4268
  ruleId: z.ZodEnum<{
4269
4269
  [x: string]: string;
4270
4270
  }>;
@@ -4323,7 +4323,7 @@ declare const crawlTopFixSchema: z.ZodObject<{
4323
4323
  expected: z.ZodString;
4324
4324
  }, z.core.$strip>;
4325
4325
  }, z.core.$strip>;
4326
- declare const crawlConfigSchema: z.ZodObject<{
4326
+ export declare const crawlConfigSchema: z.ZodObject<{
4327
4327
  url: z.ZodString;
4328
4328
  mode: z.ZodEnum<{
4329
4329
  page: "page";
@@ -4367,7 +4367,7 @@ declare const crawlConfigSchema: z.ZodObject<{
4367
4367
  }, z.core.$strip>>;
4368
4368
  }, z.core.$strip>;
4369
4369
  }, z.core.$strip>;
4370
- declare const crawlReportSummarySchema: z.ZodObject<{
4370
+ export declare const crawlReportSummarySchema: z.ZodObject<{
4371
4371
  totalPages: z.ZodNumber;
4372
4372
  statusOnlyPages: z.ZodNumber;
4373
4373
  indexablePages: z.ZodNumber;
@@ -4418,7 +4418,7 @@ declare const crawlReportSummarySchema: z.ZodObject<{
4418
4418
  byStatus: z.ZodRecord<z.ZodString, z.ZodNumber>;
4419
4419
  byCategory: z.ZodRecord<z.ZodString, z.ZodNumber>;
4420
4420
  }, z.core.$strip>;
4421
- declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4421
+ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4422
4422
  id: z.ZodString;
4423
4423
  definitionId: z.ZodString;
4424
4424
  site: z.ZodOptional<z.ZodString>;
@@ -8334,7 +8334,7 @@ declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
8334
8334
  extraction: z.ZodLiteral<"not-applicable">;
8335
8335
  }, z.core.$strip>]>>;
8336
8336
  }, z.core.$strip>], "requestEvidenceStatus">;
8337
- declare const crawlerSchemas: {
8337
+ export declare const crawlerSchemas: {
8338
8338
  crawlReport: z.ZodDiscriminatedUnion<[z.ZodObject<{
8339
8339
  id: z.ZodString;
8340
8340
  definitionId: z.ZodString;
@@ -13177,7 +13177,7 @@ declare const crawlerSchemas: {
13177
13177
  }, z.core.$strip>>;
13178
13178
  }, z.core.$strip>;
13179
13179
  };
13180
- declare const crawlerJsonSchemas: {
13180
+ export declare const crawlerJsonSchemas: {
13181
13181
  crawlReport: z.core.ZodStandardJSONSchemaPayload<z.ZodDiscriminatedUnion<[z.ZodObject<{
13182
13182
  id: z.ZodString;
13183
13183
  definitionId: z.ZodString;
@@ -18022,30 +18022,30 @@ declare const crawlerJsonSchemas: {
18022
18022
  };
18023
18023
  //#endregion
18024
18024
  //#region packages/core/src/fetch/crawler-identity.d.ts
18025
- declare const SEO_CRAWLER_TOKEN = "SEO-Skill";
18026
- declare const SEO_CRAWLER_USER_AGENT: string;
18027
- declare const SEO_CRAWLER_IDENTITY: CrawlerIdentity;
18025
+ export declare const SEO_CRAWLER_TOKEN = "SEO-Skill";
18026
+ export declare const SEO_CRAWLER_USER_AGENT: string;
18027
+ export declare const SEO_CRAWLER_IDENTITY: CrawlerIdentity;
18028
18028
  //#endregion
18029
18029
  //#region packages/core/src/fetch/http-client.d.ts
18030
- type HttpProfile = 'browser' | 'bot';
18031
- declare class ResponseSizeLimitError extends Error {
18030
+ export type HttpProfile = 'browser' | 'bot';
18031
+ export declare class ResponseSizeLimitError extends Error {
18032
18032
  readonly maxBytes: number;
18033
18033
  constructor(maxBytes: number, label?: string);
18034
18034
  }
18035
18035
  /** @deprecated Use SEO_CRAWLER_USER_AGENT. */
18036
- declare const BROWSER_USER_AGENT: string;
18037
- declare function requestHeaders(profile: HttpProfile): Headers$1;
18038
- declare function publicHttpFetch(url: string, input?: RequestInit$1 & {
18036
+ export declare const BROWSER_USER_AGENT: string;
18037
+ export declare function requestHeaders(profile: HttpProfile): Headers$1;
18038
+ export declare function publicHttpFetch(url: string, input?: RequestInit$1 & {
18039
18039
  profile?: HttpProfile;
18040
18040
  }): Promise<import("undici").Response>;
18041
- declare function readBoundedResponseText(response: Awaited<ReturnType<typeof publicHttpFetch>>, maxBytes: number, label?: string): Promise<string>;
18041
+ export declare function readBoundedResponseText(response: Awaited<ReturnType<typeof publicHttpFetch>>, maxBytes: number, label?: string): Promise<string>;
18042
18042
  //#endregion
18043
18043
  //#region packages/core/src/provider-extensions/contracts.d.ts
18044
- declare const providerExtensionIdSchema: z.ZodString;
18045
- declare const providerPackageNameSchema: z.ZodString;
18046
- declare const providerExactVersionSchema: z.ZodString;
18047
- declare const providerIntegritySchema: z.ZodString;
18048
- declare const providerKindSchema: z.ZodEnum<{
18044
+ export declare const providerExtensionIdSchema: z.ZodString;
18045
+ export declare const providerPackageNameSchema: z.ZodString;
18046
+ export declare const providerExactVersionSchema: z.ZodString;
18047
+ export declare const providerIntegritySchema: z.ZodString;
18048
+ export declare const providerKindSchema: z.ZodEnum<{
18049
18049
  "traffic-analytics": "traffic-analytics";
18050
18050
  "search-results": "search-results";
18051
18051
  "keyword-data": "keyword-data";
@@ -18055,7 +18055,7 @@ declare const providerKindSchema: z.ZodEnum<{
18055
18055
  "ai-data": "ai-data";
18056
18056
  other: "other";
18057
18057
  }>;
18058
- declare const providerConnectionFieldSchema: z.ZodObject<{
18058
+ export declare const providerConnectionFieldSchema: z.ZodObject<{
18059
18059
  id: z.ZodString;
18060
18060
  label: z.ZodString;
18061
18061
  description: z.ZodOptional<z.ZodString>;
@@ -18066,11 +18066,11 @@ declare const providerConnectionFieldSchema: z.ZodObject<{
18066
18066
  required: z.ZodOptional<z.ZodBoolean>;
18067
18067
  envVar: z.ZodOptional<z.ZodString>;
18068
18068
  }, z.core.$strict>;
18069
- declare const providerPackageManifestSchema: z.ZodObject<{
18069
+ export declare const providerPackageManifestSchema: z.ZodObject<{
18070
18070
  apiVersion: z.ZodLiteral<1>;
18071
18071
  providers: z.ZodArray<z.ZodString>;
18072
18072
  }, z.core.$strict>;
18073
- declare const installedProviderPackageSchema: z.ZodObject<{
18073
+ export declare const installedProviderPackageSchema: z.ZodObject<{
18074
18074
  id: z.ZodString;
18075
18075
  package: z.ZodString;
18076
18076
  version: z.ZodString;
@@ -18078,7 +18078,7 @@ declare const installedProviderPackageSchema: z.ZodObject<{
18078
18078
  enabled: z.ZodBoolean;
18079
18079
  installedAt: z.ZodString;
18080
18080
  }, z.core.$strict>;
18081
- declare const installedProviderPackagesSchema: z.ZodObject<{
18081
+ export declare const installedProviderPackagesSchema: z.ZodObject<{
18082
18082
  schemaVersion: z.ZodLiteral<1>;
18083
18083
  packages: z.ZodArray<z.ZodObject<{
18084
18084
  id: z.ZodString;
@@ -18089,7 +18089,7 @@ declare const installedProviderPackagesSchema: z.ZodObject<{
18089
18089
  installedAt: z.ZodString;
18090
18090
  }, z.core.$strict>>;
18091
18091
  }, z.core.$strict>;
18092
- declare const providerRegistrationSchema: z.ZodObject<{
18092
+ export declare const providerRegistrationSchema: z.ZodObject<{
18093
18093
  id: z.ZodString;
18094
18094
  displayName: z.ZodString;
18095
18095
  description: z.ZodString;
@@ -18107,16 +18107,16 @@ declare const providerRegistrationSchema: z.ZodObject<{
18107
18107
  capabilities: z.ZodArray<z.ZodType<SeoProviderCapabilityAdapter, unknown, z.core.$ZodTypeInternals<SeoProviderCapabilityAdapter, unknown>>>;
18108
18108
  actions: z.ZodOptional<z.ZodArray<z.ZodCustom<SeoProviderActionAdapter, SeoProviderActionAdapter>>>;
18109
18109
  }, z.core.$strict>;
18110
- type ProviderPackageManifest = z.infer<typeof providerPackageManifestSchema>;
18111
- type InstalledProviderPackage = z.infer<typeof installedProviderPackageSchema>;
18112
- type InstalledProviderPackages = z.infer<typeof installedProviderPackagesSchema>;
18110
+ export type ProviderPackageManifest = z.infer<typeof providerPackageManifestSchema>;
18111
+ export type InstalledProviderPackage = z.infer<typeof installedProviderPackageSchema>;
18112
+ export type InstalledProviderPackages = z.infer<typeof installedProviderPackagesSchema>;
18113
18113
  //#endregion
18114
18114
  //#region packages/core/src/provider-extensions/registry.d.ts
18115
- type RegisteredProviderExtension = SeoProviderRegistration & {
18115
+ export type RegisteredProviderExtension = SeoProviderRegistration & {
18116
18116
  package: string;
18117
18117
  version: string;
18118
18118
  };
18119
- declare class ProviderExtensionRegistry {
18119
+ export declare class ProviderExtensionRegistry {
18120
18120
  #private;
18121
18121
  hostFor(input: {
18122
18122
  package: string;
@@ -18135,43 +18135,43 @@ declare class ProviderExtensionRegistry {
18135
18135
  type ImportedProviderModule = {
18136
18136
  default?: unknown;
18137
18137
  };
18138
- type ProviderExtensionLoadFailure = {
18138
+ export type ProviderExtensionLoadFailure = {
18139
18139
  id: string;
18140
18140
  package: string;
18141
18141
  message: string;
18142
18142
  };
18143
- type LoadedProviderExtensions = {
18143
+ export type LoadedProviderExtensions = {
18144
18144
  registry: ProviderExtensionRegistry;
18145
18145
  failures: ProviderExtensionLoadFailure[];
18146
18146
  };
18147
- type ProviderExtensionLoaderOptions = {
18147
+ export type ProviderExtensionLoaderOptions = {
18148
18148
  registry?: ProviderExtensionRegistry;
18149
18149
  packagesDir?: string;
18150
18150
  installed?: readonly InstalledProviderPackage[];
18151
18151
  importModule?: (url: string) => Promise<ImportedProviderModule>;
18152
18152
  };
18153
- declare function loadProviderPackage(input: {
18153
+ export declare function loadProviderPackage(input: {
18154
18154
  package: string;
18155
18155
  version: string;
18156
18156
  }, options: {
18157
18157
  packagesDir: string;
18158
18158
  importModule?: (url: string) => Promise<ImportedProviderModule>;
18159
18159
  }): Promise<RegisteredProviderExtension[]>;
18160
- declare function loadInstalledProviderExtensions(options?: ProviderExtensionLoaderOptions): Promise<LoadedProviderExtensions>;
18160
+ export declare function loadInstalledProviderExtensions(options?: ProviderExtensionLoaderOptions): Promise<LoadedProviderExtensions>;
18161
18161
  //#endregion
18162
18162
  //#region packages/core/src/providers/imports/research-columns.d.ts
18163
- declare const RESEARCH_IMPORT_COLUMN_KEYS: readonly ["keyword", "url", "position", "absolutePosition", "searchVolume", "keywordDifficulty", "cpc", "paidCompetition", "intent", "resultCount", "estimatedTraffic", "resultType", "searchVolumeUpdatedAt"];
18164
- type ResearchImportColumn = (typeof RESEARCH_IMPORT_COLUMN_KEYS)[number];
18165
- type ResearchImportColumns = Partial<Record<ResearchImportColumn, string>>;
18166
- declare function normalizedResearchColumnName(value: string): string;
18167
- declare function researchImportColumns(value: ResearchImportColumns | undefined): ResearchImportColumns | undefined;
18168
- declare function validateResearchImportColumnSources(columns: ResearchImportColumns | undefined, includedFields: Iterable<string>): void;
18163
+ export declare const RESEARCH_IMPORT_COLUMN_KEYS: readonly ["keyword", "url", "position", "absolutePosition", "searchVolume", "keywordDifficulty", "cpc", "paidCompetition", "intent", "resultCount", "estimatedTraffic", "resultType", "searchVolumeUpdatedAt"];
18164
+ export type ResearchImportColumn = (typeof RESEARCH_IMPORT_COLUMN_KEYS)[number];
18165
+ export type ResearchImportColumns = Partial<Record<ResearchImportColumn, string>>;
18166
+ export declare function normalizedResearchColumnName(value: string): string;
18167
+ export declare function researchImportColumns(value: ResearchImportColumns | undefined): ResearchImportColumns | undefined;
18168
+ export declare function validateResearchImportColumnSources(columns: ResearchImportColumns | undefined, includedFields: Iterable<string>): void;
18169
18169
  //#endregion
18170
18170
  //#region packages/core/src/providers/contracts.d.ts
18171
- declare const providerIdSchema: z.ZodString;
18172
- type ProviderId = z.infer<typeof providerIdSchema>;
18173
- type ExternalServiceId = string;
18174
- declare const providerCapabilitySchema: z.ZodEnum<{
18171
+ export declare const providerIdSchema: z.ZodString;
18172
+ export type ProviderId = z.infer<typeof providerIdSchema>;
18173
+ export type ExternalServiceId = string;
18174
+ export declare const providerCapabilitySchema: z.ZodEnum<{
18175
18175
  "local-search": "local-search";
18176
18176
  "serp-snapshot": "serp-snapshot";
18177
18177
  "keyword-metrics": "keyword-metrics";
@@ -18187,8 +18187,8 @@ declare const providerCapabilitySchema: z.ZodEnum<{
18187
18187
  "ai-mentions": "ai-mentions";
18188
18188
  "ai-prompt-observation": "ai-prompt-observation";
18189
18189
  }>;
18190
- type ProviderCapability = z.infer<typeof providerCapabilitySchema>;
18191
- type ProviderValue<T> = {
18190
+ export type ProviderCapability = z.infer<typeof providerCapabilitySchema>;
18191
+ export type ProviderValue<T> = {
18192
18192
  state: 'observed';
18193
18193
  value: T;
18194
18194
  } | {
@@ -18196,13 +18196,13 @@ type ProviderValue<T> = {
18196
18196
  value: null;
18197
18197
  reason: string;
18198
18198
  };
18199
- type ProviderWarning = {
18199
+ export type ProviderWarning = {
18200
18200
  code: string;
18201
18201
  message: string;
18202
18202
  field?: string;
18203
18203
  row?: number;
18204
18204
  };
18205
- type ProviderImportEvidence = {
18205
+ export type ProviderImportEvidence = {
18206
18206
  provider: ProviderId;
18207
18207
  path: string;
18208
18208
  format: 'csv' | 'json' | 'jsonl';
@@ -18224,7 +18224,7 @@ type ProviderImportEvidence = {
18224
18224
  capped: boolean;
18225
18225
  rowLimit: number;
18226
18226
  };
18227
- type KeywordMetric = {
18227
+ export type KeywordMetric = {
18228
18228
  keyword: string;
18229
18229
  monthlySearchVolume: ProviderValue<number>;
18230
18230
  monthlySearches: ProviderValue<KeywordMonthlySearch[]>;
@@ -18235,15 +18235,15 @@ type KeywordMetric = {
18235
18235
  intent: ProviderValue<string>;
18236
18236
  resultCount: ProviderValue<number>;
18237
18237
  };
18238
- type KeywordMonthlySearch = {
18238
+ export type KeywordMonthlySearch = {
18239
18239
  year: number;
18240
18240
  month: number;
18241
18241
  searchVolume: number;
18242
18242
  };
18243
18243
  //#endregion
18244
18244
  //#region packages/core/src/providers/transport.d.ts
18245
- type ProviderFetch = (url: string | URL, init?: RequestInit$1) => Promise<Response$1>;
18246
- type ProviderRequestInput = {
18245
+ export type ProviderFetch = (url: string | URL, init?: RequestInit$1) => Promise<Response$1>;
18246
+ export type ProviderRequestInput = {
18247
18247
  provider: ExternalServiceId;
18248
18248
  operation: string;
18249
18249
  url: string | URL;
@@ -18255,22 +18255,22 @@ type ProviderRequestInput = {
18255
18255
  retryDelayMs?: number;
18256
18256
  onResponse?: (response: Response$1) => void;
18257
18257
  };
18258
- declare function providerRequestText(input: ProviderRequestInput): Promise<string>;
18259
- declare function providerRequestJson<T>(input: ProviderRequestInput & {
18258
+ export declare function providerRequestText(input: ProviderRequestInput): Promise<string>;
18259
+ export declare function providerRequestJson<T>(input: ProviderRequestInput & {
18260
18260
  schema: z.ZodType<T>;
18261
18261
  }): Promise<T>;
18262
18262
  //#endregion
18263
18263
  //#region packages/core/src/provider-extensions/runtime.d.ts
18264
- type ProviderRuntimeOptions = {
18264
+ export type ProviderRuntimeOptions = {
18265
18265
  fetch?: ProviderFetch;
18266
18266
  maxRequests?: number;
18267
18267
  now?: () => Date;
18268
18268
  };
18269
- declare function normalizeProviderExtensionAccount(provider: Pick<SeoProviderRegistration, 'displayName' | 'connection'>, account: Readonly<Record<string, string>>): Record<string, string>;
18270
- declare function loadProviderExtensions(): Promise<LoadedProviderExtensions>;
18271
- declare function safeProviderAdapterError(providerId: string, error: unknown, credentials: Readonly<Record<string, string>>): Error;
18272
- declare function runtimeForProvider(provider: string, options?: ProviderRuntimeOptions): SeoProviderRuntime;
18273
- declare function verifyProviderExtension(input: {
18269
+ export declare function normalizeProviderExtensionAccount(provider: Pick<SeoProviderRegistration, 'displayName' | 'connection'>, account: Readonly<Record<string, string>>): Record<string, string>;
18270
+ export declare function loadProviderExtensions(): Promise<LoadedProviderExtensions>;
18271
+ export declare function safeProviderAdapterError(providerId: string, error: unknown, credentials: Readonly<Record<string, string>>): Error;
18272
+ export declare function runtimeForProvider(provider: string, options?: ProviderRuntimeOptions): SeoProviderRuntime;
18273
+ export declare function verifyProviderExtension(input: {
18274
18274
  providerId: string;
18275
18275
  account: Readonly<Record<string, string>>;
18276
18276
  credentials: Readonly<Record<string, string>>;
@@ -18278,14 +18278,14 @@ declare function verifyProviderExtension(input: {
18278
18278
  }): Promise<void>;
18279
18279
  //#endregion
18280
18280
  //#region packages/core/src/provider-extensions/analytics.d.ts
18281
- type AnalyticsProviderRuntimeOptions = ProviderRuntimeOptions;
18282
- declare function verifyAnalyticsProvider(input: {
18281
+ export type AnalyticsProviderRuntimeOptions = ProviderRuntimeOptions;
18282
+ export declare function verifyAnalyticsProvider(input: {
18283
18283
  providerId: string;
18284
18284
  account: Readonly<Record<string, string>>;
18285
18285
  credentials: Readonly<Record<string, string>>;
18286
18286
  runtime?: AnalyticsProviderRuntimeOptions;
18287
18287
  }): Promise<void>;
18288
- declare function runAnalyticsProviderLandingPages(input: {
18288
+ export declare function runAnalyticsProviderLandingPages(input: {
18289
18289
  providerId: string;
18290
18290
  account: Readonly<Record<string, string>>;
18291
18291
  credentials?: Readonly<Record<string, string>>;
@@ -18352,7 +18352,7 @@ type ResolvedCrawlSiteDependencies = {
18352
18352
  type CrawlSiteDependencies = Partial<ResolvedCrawlSiteDependencies>;
18353
18353
  //#endregion
18354
18354
  //#region packages/core/src/analyze/crawler/site-crawl.d.ts
18355
- declare function crawlSite(input: CrawlConfigInput, dependencies?: CrawlSiteDependencies): Promise<CrawlReport>;
18355
+ export declare function crawlSite(input: CrawlConfigInput, dependencies?: CrawlSiteDependencies): Promise<CrawlReport>;
18356
18356
  //#endregion
18357
18357
  //#region packages/core/src/analyze/query-quality.d.ts
18358
18358
  type QueryFlag = 'likely-automated' | 'navigational-other';
@@ -18436,11 +18436,11 @@ type MinImpressionsPolicy = {
18436
18436
  };
18437
18437
  //#endregion
18438
18438
  //#region packages/core/src/analyze/ctr-underperformers-report.d.ts
18439
- interface CtrUnderperformerDependencies {
18439
+ export interface CtrUnderperformerDependencies {
18440
18440
  searchAnalytics: SearchAnalyticsQuery;
18441
18441
  now: () => Date;
18442
18442
  }
18443
- type CtrUnderperformersInput = {
18443
+ export type CtrUnderperformersInput = {
18444
18444
  site: string;
18445
18445
  /** Window length in days; ignored when startDate and endDate are given. */
18446
18446
  days?: number;
@@ -18454,8 +18454,8 @@ type CtrUnderperformersInput = {
18454
18454
  includeBrand?: boolean;
18455
18455
  refresh?: boolean;
18456
18456
  };
18457
- type CtrUnderperformersReport = Awaited<ReturnType<typeof ctrUnderperformersReportWith>>;
18458
- declare function ctrUnderperformersReportWith(input: CtrUnderperformersInput, dependencies: CtrUnderperformerDependencies): Promise<{
18457
+ export type CtrUnderperformersReport = Awaited<ReturnType<typeof ctrUnderperformersReportWith>>;
18458
+ export declare function ctrUnderperformersReportWith(input: CtrUnderperformersInput, dependencies: CtrUnderperformerDependencies): Promise<{
18459
18459
  schemaVersion: 1;
18460
18460
  site: string;
18461
18461
  range: {
@@ -18549,10 +18549,10 @@ declare function ctrUnderperformersReportWith(input: CtrUnderperformersInput, de
18549
18549
  }>;
18550
18550
  //#endregion
18551
18551
  //#region packages/core/src/analyze/ctr-underperformers-analysis.d.ts
18552
- declare const CTR_MAX_MIN_IMPRESSIONS = 1000000000;
18553
- declare const CTR_DEFAULT_LIMIT = 25;
18554
- declare const CTR_MAX_LIMIT = 100;
18555
- declare function analyzeCtrUnderperformersFromRows(input: {
18552
+ export declare const CTR_MAX_MIN_IMPRESSIONS = 1000000000;
18553
+ export declare const CTR_DEFAULT_LIMIT = 25;
18554
+ export declare const CTR_MAX_LIMIT = 100;
18555
+ export declare function analyzeCtrUnderperformersFromRows(input: {
18556
18556
  rows: GscRow[];
18557
18557
  site: string;
18558
18558
  minImpressions?: number;
@@ -18572,10 +18572,10 @@ declare function analyzeCtrUnderperformersFromRows(input: {
18572
18572
  };
18573
18573
  //#endregion
18574
18574
  //#region packages/core/src/analyze/ctr-underperformers.d.ts
18575
- declare function ctrUnderperformersReport(input: CtrUnderperformersInput, dependencies?: CtrUnderperformerDependencies): Promise<CtrUnderperformersReport>;
18575
+ export declare function ctrUnderperformersReport(input: CtrUnderperformersInput, dependencies?: CtrUnderperformerDependencies): Promise<CtrUnderperformersReport>;
18576
18576
  //#endregion
18577
18577
  //#region packages/core/src/progress.d.ts
18578
- type ProgressReporter = (message: string) => void;
18578
+ export type ProgressReporter = (message: string) => void;
18579
18579
  //#endregion
18580
18580
  //#region packages/core/src/analyze/segment-impact-types.d.ts
18581
18581
  type SegmentDimension = 'page' | 'query' | 'country' | 'device';
@@ -18677,7 +18677,7 @@ type SegmentImpactReport = {
18677
18677
  };
18678
18678
  //#endregion
18679
18679
  //#region packages/core/src/analyze/segment-impact-analysis.d.ts
18680
- declare function analyzeSegmentRows(input: {
18680
+ export declare function analyzeSegmentRows(input: {
18681
18681
  site: string;
18682
18682
  dimension: SegmentImpactReport['dimension'];
18683
18683
  before: SegmentRange;
@@ -18697,7 +18697,7 @@ declare function analyzeSegmentRows(input: {
18697
18697
  }): SegmentImpactReport;
18698
18698
  //#endregion
18699
18699
  //#region packages/core/src/analyze/segment-impact-fallback.d.ts
18700
- declare function unavailableSegmentImpactReport(input: {
18700
+ export declare function unavailableSegmentImpactReport(input: {
18701
18701
  site: string;
18702
18702
  dimension: SegmentDimension;
18703
18703
  after: SegmentRange;
@@ -18706,9 +18706,9 @@ declare function unavailableSegmentImpactReport(input: {
18706
18706
  }): SegmentImpactReport;
18707
18707
  //#endregion
18708
18708
  //#region packages/core/src/analyze/segment-impact-input.d.ts
18709
- declare function segmentRangeDays(range: SegmentRange): number;
18710
- declare function segmentComparisonRange(after: SegmentRange, compareDays: number): SegmentRange;
18711
- declare function resolveSegmentRanges(input: {
18709
+ export declare function segmentRangeDays(range: SegmentRange): number;
18710
+ export declare function segmentComparisonRange(after: SegmentRange, compareDays: number): SegmentRange;
18711
+ export declare function resolveSegmentRanges(input: {
18712
18712
  days?: number;
18713
18713
  compareDays?: number;
18714
18714
  startDate?: string;
@@ -18721,7 +18721,7 @@ declare function resolveSegmentRanges(input: {
18721
18721
  //#endregion
18722
18722
  //#region packages/core/src/analyze/segment-impact.d.ts
18723
18723
  type SearchAnalytics$1 = typeof querySearchAnalytics;
18724
- interface SegmentImpactInput {
18724
+ export interface SegmentImpactInput {
18725
18725
  site: string;
18726
18726
  dimension?: SegmentDimension;
18727
18727
  days?: number;
@@ -18733,11 +18733,11 @@ interface SegmentImpactInput {
18733
18733
  maxRows?: number;
18734
18734
  refresh?: boolean;
18735
18735
  }
18736
- interface SegmentImpactDependencies {
18736
+ export interface SegmentImpactDependencies {
18737
18737
  searchAnalytics: SearchAnalytics$1;
18738
18738
  now: () => Date;
18739
18739
  }
18740
- declare function compareSegmentRows(input: {
18740
+ export declare function compareSegmentRows(input: {
18741
18741
  site: string;
18742
18742
  dimension: SegmentDimension;
18743
18743
  before: {
@@ -18755,7 +18755,7 @@ declare function compareSegmentRows(input: {
18755
18755
  maxRows?: number;
18756
18756
  generatedAt?: string;
18757
18757
  }): SegmentImpactReport;
18758
- declare function segmentImpact(input: SegmentImpactInput, dependencies?: SegmentImpactDependencies): Promise<SegmentImpactReport>;
18758
+ export declare function segmentImpact(input: SegmentImpactInput, dependencies?: SegmentImpactDependencies): Promise<SegmentImpactReport>;
18759
18759
  //#endregion
18760
18760
  //#region packages/core/src/providers/domain-contracts.d.ts
18761
18761
  type ResearchImportSource = {
@@ -19045,7 +19045,7 @@ interface CannibalAnalysis {
19045
19045
  //#endregion
19046
19046
  //#region packages/core/src/analyze/site-diagnostics/cannibal-report.d.ts
19047
19047
  /** Search Console input. Local research-file imports use the Node binding. */
19048
- interface CannibalSearchConsoleInput {
19048
+ export interface CannibalSearchConsoleInput {
19049
19049
  site: string;
19050
19050
  days?: number;
19051
19051
  startDate?: string;
@@ -19056,39 +19056,39 @@ interface CannibalSearchConsoleInput {
19056
19056
  includeBrand?: boolean;
19057
19057
  refresh?: boolean;
19058
19058
  }
19059
- interface CannibalDependencies {
19059
+ export interface CannibalDependencies {
19060
19060
  searchAnalytics: SearchAnalyticsQuery;
19061
19061
  now: () => Date;
19062
19062
  }
19063
- declare function cannibalReportWith(input: CannibalSearchConsoleInput, dependencies: CannibalDependencies): Promise<CannibalReport>;
19063
+ export declare function cannibalReportWith(input: CannibalSearchConsoleInput, dependencies: CannibalDependencies): Promise<CannibalReport>;
19064
19064
  //#endregion
19065
19065
  //#region packages/core/src/analyze/site-diagnostics/cannibal-analysis.d.ts
19066
- declare function analyzeCannibalRows(input: AnalyzeCannibalRowsInput): CannibalAnalysis;
19067
- declare const CANNIBAL_MINIMUM_PAGE_SHARE = 0.1;
19068
- declare const CANNIBAL_MAXIMUM_DOMINANT_SHARE = 0.8;
19066
+ export declare function analyzeCannibalRows(input: AnalyzeCannibalRowsInput): CannibalAnalysis;
19067
+ export declare const CANNIBAL_MINIMUM_PAGE_SHARE = 0.1;
19068
+ export declare const CANNIBAL_MAXIMUM_DOMINANT_SHARE = 0.8;
19069
19069
  //#endregion
19070
19070
  //#region packages/core/src/analyze/site-diagnostics/cannibal-import.d.ts
19071
- interface CannibalImportReportInput {
19071
+ export interface CannibalImportReportInput {
19072
19072
  site: string;
19073
19073
  researchFiles: ResearchImportSource[];
19074
19074
  limit?: number;
19075
19075
  brandTerms?: string[];
19076
19076
  includeBrand?: boolean;
19077
19077
  }
19078
- interface CannibalImportDependencies {
19078
+ export interface CannibalImportDependencies {
19079
19079
  now?: () => Date;
19080
19080
  }
19081
- declare function analyzeCannibalImportRows(input: AnalyzeCannibalImportRowsInput): CannibalImportAnalysis;
19082
- declare function cannibalImportReport(input: CannibalImportReportInput, dependencies?: CannibalImportDependencies): Promise<CannibalImportReport>;
19081
+ export declare function analyzeCannibalImportRows(input: AnalyzeCannibalImportRowsInput): CannibalImportAnalysis;
19082
+ export declare function cannibalImportReport(input: CannibalImportReportInput, dependencies?: CannibalImportDependencies): Promise<CannibalImportReport>;
19083
19083
  //#endregion
19084
19084
  //#region packages/core/src/analyze/site-diagnostics/cannibal.d.ts
19085
- interface CannibalReportInput extends CannibalSearchConsoleInput {
19085
+ export interface CannibalReportInput extends CannibalSearchConsoleInput {
19086
19086
  researchFiles?: ResearchImportSource[];
19087
19087
  }
19088
- declare function cannibalReport(input: CannibalReportInput & {
19088
+ export declare function cannibalReport(input: CannibalReportInput & {
19089
19089
  researchFiles: ResearchImportSource[];
19090
19090
  }, dependencies?: CannibalDependencies): Promise<CannibalImportReport>;
19091
- declare function cannibalReport(input: CannibalReportInput & {
19091
+ export declare function cannibalReport(input: CannibalReportInput & {
19092
19092
  researchFiles?: undefined;
19093
19093
  }, dependencies?: CannibalDependencies): Promise<CannibalReport>;
19094
19094
  //#endregion
@@ -19245,10 +19245,10 @@ interface DecayReport {
19245
19245
  }
19246
19246
  //#endregion
19247
19247
  //#region packages/core/src/analyze/site-diagnostics/decay-analysis.d.ts
19248
- declare function analyzeDecay(input: AnalyzeDecayInput): DecayAnalysis;
19248
+ export declare function analyzeDecay(input: AnalyzeDecayInput): DecayAnalysis;
19249
19249
  //#endregion
19250
19250
  //#region packages/core/src/analyze/site-diagnostics/decay-report-input.d.ts
19251
- declare function decayComparisonRange(current: {
19251
+ export declare function decayComparisonRange(current: {
19252
19252
  startDate: string;
19253
19253
  endDate: string;
19254
19254
  }, comparison?: DecayComparison): {
@@ -19257,7 +19257,7 @@ declare function decayComparisonRange(current: {
19257
19257
  };
19258
19258
  //#endregion
19259
19259
  //#region packages/core/src/analyze/site-diagnostics/decaying-report.d.ts
19260
- interface DecayingReportInput {
19260
+ export interface DecayingReportInput {
19261
19261
  site: string;
19262
19262
  days?: number;
19263
19263
  startDate?: string;
@@ -19271,14 +19271,14 @@ interface DecayingReportInput {
19271
19271
  includeBrand?: boolean;
19272
19272
  refresh?: boolean;
19273
19273
  }
19274
- interface DecayingDependencies {
19274
+ export interface DecayingDependencies {
19275
19275
  searchAnalytics: SearchAnalyticsQuery;
19276
19276
  now: () => Date;
19277
19277
  }
19278
- declare function decayingReportWith(input: DecayingReportInput, dependencies: DecayingDependencies): Promise<DecayReport>;
19278
+ export declare function decayingReportWith(input: DecayingReportInput, dependencies: DecayingDependencies): Promise<DecayReport>;
19279
19279
  //#endregion
19280
19280
  //#region packages/core/src/analyze/site-diagnostics/decaying.d.ts
19281
- declare function decayingReport(input: DecayingReportInput, dependencies?: DecayingDependencies): Promise<DecayReport>;
19281
+ export declare function decayingReport(input: DecayingReportInput, dependencies?: DecayingDependencies): Promise<DecayReport>;
19282
19282
  //#endregion
19283
19283
  //#region packages/core/src/analyze/site-ctr-curve.d.ts
19284
19284
  declare const SITE_CTR_CURVE_METHOD: {
@@ -19441,7 +19441,7 @@ type AnalyzeQuickWinsInput = {
19441
19441
  };
19442
19442
  //#endregion
19443
19443
  //#region packages/core/src/analyze/site-diagnostics/quick-wins-report.d.ts
19444
- type QuickWinsInput = {
19444
+ export type QuickWinsInput = {
19445
19445
  site: string;
19446
19446
  days?: number;
19447
19447
  startDate?: string;
@@ -19456,7 +19456,7 @@ type QuickWinsInput = {
19456
19456
  rate?: FetchRateControls;
19457
19457
  refresh?: boolean;
19458
19458
  };
19459
- type QuickWinsDependencies = {
19459
+ export type QuickWinsDependencies = {
19460
19460
  searchAnalytics: SearchAnalyticsQuery;
19461
19461
  /** Required only when page verification is requested. */
19462
19462
  fetch?: PageFetcher;
@@ -19464,8 +19464,8 @@ type QuickWinsDependencies = {
19464
19464
  extract?: PageExtractor;
19465
19465
  now: () => Date;
19466
19466
  };
19467
- type QuickWinsReport = Awaited<ReturnType<typeof quickWinsReportWith>>;
19468
- declare function quickWinsReportWith(input: QuickWinsInput, dependencies: QuickWinsDependencies): Promise<{
19467
+ export type QuickWinsReport = Awaited<ReturnType<typeof quickWinsReportWith>>;
19468
+ export declare function quickWinsReportWith(input: QuickWinsInput, dependencies: QuickWinsDependencies): Promise<{
19469
19469
  site: string;
19470
19470
  generatedAt: string;
19471
19471
  range: {
@@ -19578,13 +19578,13 @@ declare function quickWinsReportWith(input: QuickWinsInput, dependencies: QuickW
19578
19578
  }>;
19579
19579
  //#endregion
19580
19580
  //#region packages/core/src/analyze/site-diagnostics/quick-wins-analysis.d.ts
19581
- declare function analyzeQuickWinsFromRows(input: AnalyzeQuickWinsInput): QuickWinAnalysis;
19581
+ export declare function analyzeQuickWinsFromRows(input: AnalyzeQuickWinsInput): QuickWinAnalysis;
19582
19582
  //#endregion
19583
19583
  //#region packages/core/src/analyze/site-diagnostics/quick-wins.d.ts
19584
- declare function quickWinsReport(input: QuickWinsInput, dependencies?: QuickWinsDependencies): Promise<QuickWinsReport>;
19584
+ export declare function quickWinsReport(input: QuickWinsInput, dependencies?: QuickWinsDependencies): Promise<QuickWinsReport>;
19585
19585
  //#endregion
19586
19586
  //#region packages/core/src/analyze/site-diagnostics/types.d.ts
19587
- interface TemplateAwareReport {
19587
+ export interface TemplateAwareReport {
19588
19588
  templates: TemplateSummary[];
19589
19589
  }
19590
19590
  //#endregion
@@ -19705,10 +19705,10 @@ type AnalyzeStrikingDistanceInput = {
19705
19705
  };
19706
19706
  //#endregion
19707
19707
  //#region packages/core/src/analyze/striking-distance-analysis.d.ts
19708
- declare function analyzeStrikingDistanceRows(input: AnalyzeStrikingDistanceInput): StrikingDistanceAnalysis;
19708
+ export declare function analyzeStrikingDistanceRows(input: AnalyzeStrikingDistanceInput): StrikingDistanceAnalysis;
19709
19709
  //#endregion
19710
19710
  //#region packages/core/src/analyze/striking-distance-report.d.ts
19711
- type StrikingDistanceInput = {
19711
+ export type StrikingDistanceInput = {
19712
19712
  site: string;
19713
19713
  /** Window length in days; ignored when startDate and endDate are given. */
19714
19714
  days?: number;
@@ -19726,10 +19726,10 @@ type StrikingDistanceInput = {
19726
19726
  rate?: FetchRateControls;
19727
19727
  refresh?: boolean;
19728
19728
  };
19729
- type StrikingDistanceItem = StrikingDistanceAnalysisItem & {
19729
+ export type StrikingDistanceItem = StrikingDistanceAnalysisItem & {
19730
19730
  contentVerification?: QueryContentCoverage;
19731
19731
  };
19732
- type StrikingDistanceReport = {
19732
+ export type StrikingDistanceReport = {
19733
19733
  site: string;
19734
19734
  generatedAt: string;
19735
19735
  range: {
@@ -19777,16 +19777,16 @@ type StrikingDistanceReport = {
19777
19777
  caveats: string[];
19778
19778
  recommendations: string[];
19779
19779
  };
19780
- type StrikingDistanceDependencies = {
19780
+ export type StrikingDistanceDependencies = {
19781
19781
  searchAnalytics: SearchAnalyticsQuery;
19782
19782
  /** Required only when page verification is requested. */
19783
19783
  verifyContent?: QueryContentVerifier;
19784
19784
  now: () => Date;
19785
19785
  };
19786
- declare function strikingDistanceWith(input: StrikingDistanceInput, dependencies: StrikingDistanceDependencies): Promise<StrikingDistanceReport>;
19786
+ export declare function strikingDistanceWith(input: StrikingDistanceInput, dependencies: StrikingDistanceDependencies): Promise<StrikingDistanceReport>;
19787
19787
  //#endregion
19788
19788
  //#region packages/core/src/analyze/striking-distance.d.ts
19789
- declare function strikingDistance(input: StrikingDistanceInput, dependencies?: StrikingDistanceDependencies): Promise<StrikingDistanceReport>;
19789
+ export declare function strikingDistance(input: StrikingDistanceInput, dependencies?: StrikingDistanceDependencies): Promise<StrikingDistanceReport>;
19790
19790
  //#endregion
19791
19791
  //#region packages/core/src/updates/search-updates.d.ts
19792
19792
  interface SearchStatusIncident {
@@ -19809,12 +19809,12 @@ interface SearchUpdate {
19809
19809
  status: 'complete' | 'rolling-out' | 'incident';
19810
19810
  sourceUrl: string;
19811
19811
  }
19812
- declare function searchUpdatesFromIncidents(incidents: SearchStatusIncident[], input?: {
19812
+ export declare function searchUpdatesFromIncidents(incidents: SearchStatusIncident[], input?: {
19813
19813
  product?: string;
19814
19814
  limit?: number;
19815
19815
  }): SearchUpdate[];
19816
- declare function withRankingHistory(live: SearchStatusIncident[]): SearchStatusIncident[];
19817
- declare function findOverlappingSearchUpdates(input: {
19816
+ export declare function withRankingHistory(live: SearchStatusIncident[]): SearchStatusIncident[];
19817
+ export declare function findOverlappingSearchUpdates(input: {
19818
19818
  updates: SearchUpdate[];
19819
19819
  startDate: string;
19820
19820
  endDate: string;
@@ -19822,7 +19822,7 @@ declare function findOverlappingSearchUpdates(input: {
19822
19822
  }): SearchUpdate[];
19823
19823
  //#endregion
19824
19824
  //#region packages/core/src/analyze/traffic-anomaly-analysis.d.ts
19825
- interface TrafficAnomaly {
19825
+ export interface TrafficAnomaly {
19826
19826
  site: string;
19827
19827
  metric: 'clicks' | 'impressions';
19828
19828
  baselineStart: string;
@@ -19850,7 +19850,7 @@ interface TrafficAnomaly {
19850
19850
  changeDate?: string | null;
19851
19851
  }
19852
19852
  /** The step-change heuristic and its thresholds, returned with the report. */
19853
- declare const STEP_CHANGE_RULES: {
19853
+ export declare const STEP_CHANGE_RULES: {
19854
19854
  readonly method: "best-split";
19855
19855
  readonly description: "Heuristic. The change date is the split of the daily series where the mean before and the mean after differ most, weighted by segment length. It counts as a step change only when it is sudden and sustained. Sudden: the median of up to localDays observed days after the date differs from the median of up to localDays days before it by at least minLocalShiftInStdDevs pooled within-segment standard deviations, so one unusual day is not a step and a slow trend is not a step. Sustained: the mean of every day from the date differs from the mean before it by a z-score of at least minZScore, stricter than the recent-window test because the date is chosen from the data. These tests use daily values capped at the capDays and 1 - capDays quantiles, so one spike day cannot hide a lasting step. Otherwise the last recentDays are compared with the days before them.";
19856
19856
  readonly minDaysBefore: 7;
@@ -19860,18 +19860,18 @@ declare const STEP_CHANGE_RULES: {
19860
19860
  readonly minZScore: 3;
19861
19861
  readonly capDays: 0.05;
19862
19862
  };
19863
- type TrafficAnomalyDetection = typeof STEP_CHANGE_RULES & {
19863
+ export type TrafficAnomalyDetection = typeof STEP_CHANGE_RULES & {
19864
19864
  recentDays: number;
19865
19865
  };
19866
19866
  /**
19867
19867
  * The dates to check against Google updates (before padding): the change
19868
19868
  * date of the first significant step change, else the comparison window.
19869
19869
  */
19870
- declare function changeWindow(anomalies: TrafficAnomaly[]): {
19870
+ export declare function changeWindow(anomalies: TrafficAnomaly[]): {
19871
19871
  start: string;
19872
19872
  end: string;
19873
19873
  } | undefined;
19874
- interface TrafficAnomalyCoverage {
19874
+ export interface TrafficAnomalyCoverage {
19875
19875
  status: 'complete' | 'partial';
19876
19876
  requestedStart: string;
19877
19877
  requestedEnd: string;
@@ -19901,7 +19901,7 @@ interface TrafficAnomalyCoverage {
19901
19901
  };
19902
19902
  caveats: string[];
19903
19903
  }
19904
- type TrafficAnomalySelection = {
19904
+ export type TrafficAnomalySelection = {
19905
19905
  sourceRows: number;
19906
19906
  invalidRows: number;
19907
19907
  duplicateRows: number;
@@ -19911,7 +19911,7 @@ type TrafficAnomalySelection = {
19911
19911
  baselineDays: number;
19912
19912
  comparisonDays: number;
19913
19913
  };
19914
- interface TrafficAnomalyReport {
19914
+ export interface TrafficAnomalyReport {
19915
19915
  site: string;
19916
19916
  generatedAt: string;
19917
19917
  /** The Search Console window used. Optional only for older fixtures. */
@@ -19927,7 +19927,7 @@ interface TrafficAnomalyReport {
19927
19927
  /** Detection method and thresholds. Optional only for older fixtures. */
19928
19928
  detection?: TrafficAnomalyDetection;
19929
19929
  }
19930
- interface UpdateCorrelationReport {
19930
+ export interface UpdateCorrelationReport {
19931
19931
  site: string;
19932
19932
  generatedAt: string;
19933
19933
  anomalies: TrafficAnomaly[];
@@ -19946,11 +19946,11 @@ interface UpdateCorrelationReport {
19946
19946
  product: string;
19947
19947
  };
19948
19948
  }
19949
- type UpdateConfounder = {
19949
+ export type UpdateConfounder = {
19950
19950
  source: 'manual';
19951
19951
  title: string;
19952
19952
  };
19953
- declare function interpretUpdateCorrelation(input: {
19953
+ export declare function interpretUpdateCorrelation(input: {
19954
19954
  site: string;
19955
19955
  anomalies: TrafficAnomaly[];
19956
19956
  overlappingUpdates: SearchUpdate[];
@@ -19960,7 +19960,7 @@ declare function interpretUpdateCorrelation(input: {
19960
19960
  paddingDays: number;
19961
19961
  refresh?: boolean;
19962
19962
  }): Pick<UpdateCorrelationReport, 'classification' | 'attribution' | 'confidence' | 'confounders' | 'summary' | 'evidence' | 'caveats' | 'actions' | 'source'>;
19963
- declare function analyzeTrafficAnomalyRows(input: {
19963
+ export declare function analyzeTrafficAnomalyRows(input: {
19964
19964
  site: string;
19965
19965
  rows: GscRow[];
19966
19966
  startDate: string;
@@ -19973,7 +19973,7 @@ declare function analyzeTrafficAnomalyRows(input: {
19973
19973
  };
19974
19974
  //#endregion
19975
19975
  //#region packages/core/src/analyze/traffic-anomaly-report.d.ts
19976
- type TrafficAnomalyInput = {
19976
+ export type TrafficAnomalyInput = {
19977
19977
  site: string;
19978
19978
  days?: number;
19979
19979
  recentDays?: number;
@@ -19981,15 +19981,15 @@ type TrafficAnomalyInput = {
19981
19981
  endDate?: string;
19982
19982
  refresh?: boolean;
19983
19983
  };
19984
- type TrafficAnomalyDependencies = {
19984
+ export type TrafficAnomalyDependencies = {
19985
19985
  searchAnalytics: SearchAnalyticsQuery;
19986
19986
  now: () => Date;
19987
19987
  };
19988
- declare function trafficAnomalyWith(input: TrafficAnomalyInput, dependencies: TrafficAnomalyDependencies): Promise<TrafficAnomalyReport>;
19988
+ export declare function trafficAnomalyWith(input: TrafficAnomalyInput, dependencies: TrafficAnomalyDependencies): Promise<TrafficAnomalyReport>;
19989
19989
  //#endregion
19990
19990
  //#region packages/core/src/analyze/traffic-anomaly.d.ts
19991
- declare function trafficAnomaly(input: TrafficAnomalyInput, dependencies?: TrafficAnomalyDependencies): Promise<TrafficAnomalyReport>;
19992
- declare function updateCorrelation(input: {
19991
+ export declare function trafficAnomaly(input: TrafficAnomalyInput, dependencies?: TrafficAnomalyDependencies): Promise<TrafficAnomalyReport>;
19992
+ export declare function updateCorrelation(input: {
19993
19993
  site: string;
19994
19994
  days?: number;
19995
19995
  recentDays?: number;
@@ -20002,22 +20002,22 @@ declare function updateCorrelation(input: {
20002
20002
  }): Promise<UpdateCorrelationReport>;
20003
20003
  //#endregion
20004
20004
  //#region packages/core/src/analyze/diagnose-property.d.ts
20005
- type DiagnosisPriority = {
20005
+ export type DiagnosisPriority = {
20006
20006
  label: string;
20007
20007
  reason: string;
20008
20008
  action: string;
20009
20009
  confidence: 'high' | 'medium' | 'low';
20010
20010
  };
20011
- type SkippedDiagnosisSection = {
20011
+ export type SkippedDiagnosisSection = {
20012
20012
  section: string;
20013
20013
  reason: string;
20014
20014
  };
20015
- type DiagnosisDataStatus = 'complete' | 'partial' | 'unavailable';
20016
- type PartialDiagnosisReason = {
20015
+ export type DiagnosisDataStatus = 'complete' | 'partial' | 'unavailable';
20016
+ export type PartialDiagnosisReason = {
20017
20017
  section: string;
20018
20018
  reason: string;
20019
20019
  };
20020
- type DiagnosePropertyReport = {
20020
+ export type DiagnosePropertyReport = {
20021
20021
  site: string;
20022
20022
  generatedAt: string;
20023
20023
  dataStatus: DiagnosisDataStatus;
@@ -20050,7 +20050,7 @@ type DiagnosePropertyReport = {
20050
20050
  strikingDistance: Awaited<ReturnType<typeof strikingDistance>>;
20051
20051
  quickWins: Awaited<ReturnType<typeof quickWinsReport>>;
20052
20052
  };
20053
- type DiagnosePropertyDependencies = {
20053
+ export type DiagnosePropertyDependencies = {
20054
20054
  trafficAnomaly: typeof trafficAnomaly;
20055
20055
  updateCorrelation: typeof updateCorrelation;
20056
20056
  segmentImpact: typeof segmentImpact;
@@ -20059,7 +20059,7 @@ type DiagnosePropertyDependencies = {
20059
20059
  strikingDistance: typeof strikingDistance;
20060
20060
  quickWinsReport: typeof quickWinsReport;
20061
20061
  };
20062
- declare function diagnoseProperty(input: {
20062
+ export declare function diagnoseProperty(input: {
20063
20063
  site: string;
20064
20064
  days?: number;
20065
20065
  recentDays?: number;
@@ -20078,7 +20078,7 @@ declare function diagnoseProperty(input: {
20078
20078
  }, dependencies?: Partial<DiagnosePropertyDependencies>): Promise<DiagnosePropertyReport>;
20079
20079
  //#endregion
20080
20080
  //#region packages/core/src/decision-model.d.ts
20081
- type DecisionQuestion = {
20081
+ export type DecisionQuestion = {
20082
20082
  type: 'noul';
20083
20083
  instructions: unknown;
20084
20084
  criteria?: {
@@ -20090,7 +20090,7 @@ type DecisionQuestion = {
20090
20090
  instructions: unknown;
20091
20091
  criteria: Record<string, unknown>;
20092
20092
  };
20093
- type DecisionAnswer = {
20093
+ export type DecisionAnswer = {
20094
20094
  type: 'noul';
20095
20095
  noul: number;
20096
20096
  } | {
@@ -20099,34 +20099,34 @@ type DecisionAnswer = {
20099
20099
  confidence: number;
20100
20100
  probabilities: Record<string, number>;
20101
20101
  };
20102
- interface DecisionRequest {
20102
+ export interface DecisionRequest {
20103
20103
  state: unknown;
20104
20104
  questions: Record<string, DecisionQuestion>;
20105
20105
  }
20106
- interface DecisionResponse {
20106
+ export interface DecisionResponse {
20107
20107
  model: string;
20108
20108
  answers: Record<string, DecisionAnswer>;
20109
20109
  inputTokens: number;
20110
20110
  }
20111
- interface DecisionModel {
20111
+ export interface DecisionModel {
20112
20112
  provider: string;
20113
20113
  name: string;
20114
20114
  pricePerMillionInputTokens: number;
20115
20115
  ask(request: DecisionRequest, signal?: AbortSignal): Promise<DecisionResponse>;
20116
20116
  }
20117
- type DecisionErrorKind = 'auth' | 'rate-limit' | 'invalid' | 'unavailable';
20118
- declare class DecisionModelError extends Error {
20117
+ export type DecisionErrorKind = 'auth' | 'rate-limit' | 'invalid' | 'unavailable';
20118
+ export declare class DecisionModelError extends Error {
20119
20119
  readonly kind: DecisionErrorKind;
20120
20120
  readonly retryAfterMs?: number | undefined;
20121
20121
  constructor(kind: DecisionErrorKind, message: string, retryAfterMs?: number | undefined);
20122
20122
  get retryable(): boolean;
20123
20123
  }
20124
- declare function typesafeDecisionModel(input: {
20124
+ export declare function typesafeDecisionModel(input: {
20125
20125
  apiKey: string;
20126
20126
  model?: string;
20127
20127
  fetch?: typeof fetch;
20128
20128
  }): DecisionModel;
20129
- interface DecisionUsage {
20129
+ export interface DecisionUsage {
20130
20130
  provider: string;
20131
20131
  model: string;
20132
20132
  requests: number;
@@ -20134,7 +20134,7 @@ interface DecisionUsage {
20134
20134
  inputTokens: number;
20135
20135
  costUsd: number;
20136
20136
  }
20137
- declare class DecisionRunner {
20137
+ export declare class DecisionRunner {
20138
20138
  readonly model: DecisionModel;
20139
20139
  private limit;
20140
20140
  private active;
@@ -20183,8 +20183,8 @@ declare class SiteIndex implements TermWeights {
20183
20183
  }
20184
20184
  //#endregion
20185
20185
  //#region packages/core/src/analyze/internal-links-crawl.d.ts
20186
- declare const DEFAULT_MAX_PAGES = 500;
20187
- declare const MAX_MAX_PAGES = 5000;
20186
+ export declare const DEFAULT_MAX_PAGES = 500;
20187
+ export declare const MAX_MAX_PAGES = 5000;
20188
20188
  type CrawlSkipReason$1 = 'robots' | 'not-html' | 'http-error' | 'fetch-failed' | 'canonicalised' | 'duplicate' | 'off-site';
20189
20189
  interface CrawledPage {
20190
20190
  url: string;
@@ -20255,7 +20255,7 @@ interface CrawlInput {
20255
20255
  declare function crawlForLinks(input: CrawlInput): Promise<SiteCrawl>;
20256
20256
  //#endregion
20257
20257
  //#region packages/core/src/analyze/internal-links-judge.d.ts
20258
- declare const PAGE_TYPES: {
20258
+ export declare const PAGE_TYPES: {
20259
20259
  readonly pillar_guide: "A long, broad guide that covers a whole topic and would naturally link out to many narrower pages";
20260
20260
  readonly support_article: "A focused article, post, tutorial, or explainer about one narrower subject";
20261
20261
  readonly product_or_service: "Sells or describes a product, service, plan, pricing, demo, or signup: a page that makes money";
@@ -20270,14 +20270,14 @@ declare const PAGE_TYPES: {
20270
20270
  readonly other: null;
20271
20271
  };
20272
20272
  type PageType = keyof typeof PAGE_TYPES;
20273
- declare const SEARCH_INTENTS: {
20273
+ export declare const SEARCH_INTENTS: {
20274
20274
  readonly informational: "The reader wants to learn or understand something";
20275
20275
  readonly commercial: "The reader is comparing or evaluating options before buying";
20276
20276
  readonly transactional: "The reader wants to buy, sign up, download, or complete an action now";
20277
20277
  readonly navigational: "The reader wants to reach a specific page or part of the site";
20278
20278
  };
20279
20279
  type SearchIntent = keyof typeof SEARCH_INTENTS;
20280
- declare const LINK_ROLES: {
20280
+ export declare const LINK_ROLES: {
20281
20281
  readonly explains_concept: "The target explains a term or idea the source mentions";
20282
20282
  readonly deeper_detail: "The target goes deeper into a sub-topic the source only touches on";
20283
20283
  readonly broader_guide: "The target is the broader guide or hub the source belongs under";
@@ -20421,7 +20421,7 @@ interface InternalLinksReport {
20421
20421
  }
20422
20422
  //#endregion
20423
20423
  //#region packages/core/src/analyze/internal-links.d.ts
20424
- interface InternalLinksInput {
20424
+ export interface InternalLinksInput {
20425
20425
  site: string;
20426
20426
  targetUrl?: string;
20427
20427
  maxPages?: number;
@@ -20429,7 +20429,7 @@ interface InternalLinksInput {
20429
20429
  endDate?: string;
20430
20430
  refresh?: boolean;
20431
20431
  }
20432
- interface InternalLinksDependencies {
20432
+ export interface InternalLinksDependencies {
20433
20433
  crawl: typeof crawlForLinks;
20434
20434
  searchConsole: {
20435
20435
  property: string;
@@ -20449,8 +20449,8 @@ interface InternalLinksDependencies {
20449
20449
  now: () => Date;
20450
20450
  progress?: ProgressReporter;
20451
20451
  }
20452
- declare function siteStartUrl(site: string): string;
20453
- declare function internalLinksReport(input: InternalLinksInput, dependencies: Partial<InternalLinksDependencies> & Pick<InternalLinksDependencies, 'searchConsole' | 'decisionModel'>): Promise<InternalLinksReport>;
20452
+ export declare function siteStartUrl(site: string): string;
20453
+ export declare function internalLinksReport(input: InternalLinksInput, dependencies: Partial<InternalLinksDependencies> & Pick<InternalLinksDependencies, 'searchConsole' | 'decisionModel'>): Promise<InternalLinksReport>;
20454
20454
  //#endregion
20455
20455
  //#region packages/core/src/analyze/url-templates.d.ts
20456
20456
  type PseoTemplateCluster = {
@@ -20477,8 +20477,8 @@ type PseoTemplateShape = {
20477
20477
  };
20478
20478
  //#endregion
20479
20479
  //#region packages/core/src/analyze/monitoring/index-coverage.d.ts
20480
- type IndexCoverageSourceCompleteness = 'complete' | 'partial' | 'truncated' | 'unknown' | 'unavailable';
20481
- type IndexCoverageSourceEvidence = {
20480
+ export type IndexCoverageSourceCompleteness = 'complete' | 'partial' | 'truncated' | 'unknown' | 'unavailable';
20481
+ export type IndexCoverageSourceEvidence = {
20482
20482
  completeness: IndexCoverageSourceCompleteness;
20483
20483
  rowsReceived: number;
20484
20484
  validUrls: number;
@@ -20488,7 +20488,7 @@ type IndexCoverageSourceEvidence = {
20488
20488
  rowLimit?: number;
20489
20489
  rowLimitReached?: boolean;
20490
20490
  };
20491
- type IndexCoverageCrawlInput = {
20491
+ export type IndexCoverageCrawlInput = {
20492
20492
  report: CrawlReport;
20493
20493
  } | {
20494
20494
  pages: CrawlPageSnapshot[];
@@ -20496,13 +20496,13 @@ type IndexCoverageCrawlInput = {
20496
20496
  rowLimit?: number;
20497
20497
  rowLimitReached?: boolean;
20498
20498
  };
20499
- type IndexCoverageSitemapInput = {
20499
+ export type IndexCoverageSitemapInput = {
20500
20500
  urls: string[];
20501
20501
  completeness: Exclude<IndexCoverageSourceCompleteness, 'unavailable'>;
20502
20502
  rowLimit?: number;
20503
20503
  rowLimitReached?: boolean;
20504
20504
  };
20505
- type IndexCoverageSearchConsoleInput = {
20505
+ export type IndexCoverageSearchConsoleInput = {
20506
20506
  rows: GscRow[];
20507
20507
  startDate: string;
20508
20508
  endDate: string;
@@ -20510,7 +20510,7 @@ type IndexCoverageSearchConsoleInput = {
20510
20510
  completeness: Exclude<IndexCoverageSourceCompleteness, 'unavailable'>;
20511
20511
  pageKeyIndex?: number;
20512
20512
  };
20513
- type IndexCoverageInput = {
20513
+ export type IndexCoverageInput = {
20514
20514
  generatedAt: string;
20515
20515
  crawl: IndexCoverageCrawlInput;
20516
20516
  sitemap?: IndexCoverageSitemapInput;
@@ -20525,12 +20525,12 @@ type IndexCoverageInput = {
20525
20525
  minShare?: number;
20526
20526
  };
20527
20527
  };
20528
- type IndexCoverageSourceMembership = {
20528
+ export type IndexCoverageSourceMembership = {
20529
20529
  crawl: boolean;
20530
20530
  sitemap: boolean;
20531
20531
  searchConsole: boolean;
20532
20532
  };
20533
- type IndexCoverageSearchVisibilityItem = {
20533
+ export type IndexCoverageSearchVisibilityItem = {
20534
20534
  url: string;
20535
20535
  clicks: number;
20536
20536
  impressions: number;
@@ -20540,14 +20540,14 @@ type IndexCoverageSearchVisibilityItem = {
20540
20540
  sources: IndexCoverageSourceMembership;
20541
20541
  crawlIndexable?: boolean;
20542
20542
  };
20543
- type IndexCoverageCandidateItem = {
20543
+ export type IndexCoverageCandidateItem = {
20544
20544
  url: string;
20545
20545
  status: number;
20546
20546
  declaredIndexability?: CrawlPageSnapshot['declaredIndexability'];
20547
20547
  inSitemap: boolean;
20548
20548
  };
20549
- type IndexCoverageControlReason = 'canonical-conflict' | 'canonical-hint-other' | 'crawl-fetch-error' | 'crawler-marked-non-indexable' | 'http-status' | 'noindex' | 'not-html' | 'robots-blocked' | 'unknown';
20550
- type IndexCoverageControlledItem = {
20549
+ export type IndexCoverageControlReason = 'canonical-conflict' | 'canonical-hint-other' | 'crawl-fetch-error' | 'crawler-marked-non-indexable' | 'http-status' | 'noindex' | 'not-html' | 'robots-blocked' | 'unknown';
20550
+ export type IndexCoverageControlledItem = {
20551
20551
  url: string;
20552
20552
  status: number;
20553
20553
  declaredIndexability?: CrawlPageSnapshot['declaredIndexability'];
@@ -20555,17 +20555,17 @@ type IndexCoverageControlledItem = {
20555
20555
  inSitemap: boolean;
20556
20556
  hasRetainedSearchVisibility: boolean;
20557
20557
  };
20558
- type IndexCoverageInventoryItem = {
20558
+ export type IndexCoverageInventoryItem = {
20559
20559
  url: string;
20560
20560
  sources: IndexCoverageSourceMembership;
20561
20561
  };
20562
- type IndexCoverageBoundedSection<T> = {
20562
+ export type IndexCoverageBoundedSection<T> = {
20563
20563
  count: number;
20564
20564
  returned: number;
20565
20565
  omitted: number;
20566
20566
  items: T[];
20567
20567
  };
20568
- type IndexCoverageTemplateReview = {
20568
+ export type IndexCoverageTemplateReview = {
20569
20569
  scope: 'crawlable-without-retained-search-visibility';
20570
20570
  eligibleUrlCount: number;
20571
20571
  count: number;
@@ -20577,7 +20577,7 @@ type IndexCoverageTemplateReview = {
20577
20577
  };
20578
20578
  clusters: PseoTemplateCluster[];
20579
20579
  };
20580
- type IndexCoverageSignalsReport = {
20580
+ export type IndexCoverageSignalsReport = {
20581
20581
  schemaVersion: 1;
20582
20582
  generatedAt: string;
20583
20583
  limits: {
@@ -20618,12 +20618,12 @@ type IndexCoverageSignalsReport = {
20618
20618
  templateReview: IndexCoverageTemplateReview;
20619
20619
  caveats: string[];
20620
20620
  };
20621
- declare function analyzeIndexCoverageSignals(input: IndexCoverageInput): IndexCoverageSignalsReport;
20621
+ export declare function analyzeIndexCoverageSignals(input: IndexCoverageInput): IndexCoverageSignalsReport;
20622
20622
  //#endregion
20623
20623
  //#region packages/core/src/analyze/monitoring/index-coverage-report.d.ts
20624
20624
  type SearchAnalytics = typeof querySearchAnalytics;
20625
20625
  type FetchSitemap = typeof fetchSitemapUrls;
20626
- type IndexCoverageReportInput = {
20626
+ export type IndexCoverageReportInput = {
20627
20627
  site: string;
20628
20628
  /** Start URL for the crawl. Defaults to the property's home page. */
20629
20629
  url?: string;
@@ -20636,7 +20636,7 @@ type IndexCoverageReportInput = {
20636
20636
  templateSamples?: number;
20637
20637
  refresh?: boolean;
20638
20638
  };
20639
- type IndexCoverageReport = IndexCoverageSignalsReport & {
20639
+ export type IndexCoverageReport = IndexCoverageSignalsReport & {
20640
20640
  site: string;
20641
20641
  input: {
20642
20642
  crawlReport: {
@@ -20659,24 +20659,24 @@ type IndexCoverageReport = IndexCoverageSignalsReport & {
20659
20659
  };
20660
20660
  };
20661
20661
  };
20662
- type IndexCoverageReportDependencies = {
20662
+ export type IndexCoverageReportDependencies = {
20663
20663
  crawl: (input: CrawlConfigInput) => Promise<CrawlReport>;
20664
20664
  searchAnalytics: SearchAnalytics;
20665
20665
  fetchSitemap: FetchSitemap;
20666
20666
  now: () => Date;
20667
20667
  };
20668
- declare function indexCoverageSignals(input: IndexCoverageReportInput, dependencies?: IndexCoverageReportDependencies): Promise<IndexCoverageReport>;
20668
+ export declare function indexCoverageSignals(input: IndexCoverageReportInput, dependencies?: IndexCoverageReportDependencies): Promise<IndexCoverageReport>;
20669
20669
  //#endregion
20670
20670
  //#region packages/core/src/analyze/monitoring/redirect-trace.d.ts
20671
- type RedirectTraceStep = {
20671
+ export type RedirectTraceStep = {
20672
20672
  url: string;
20673
20673
  status: number;
20674
20674
  location?: string;
20675
20675
  nextUrl?: string;
20676
20676
  durationMs: number;
20677
20677
  };
20678
- type RedirectTraceIssue = 'redirect-loop' | 'too-many-redirects' | 'redirect-without-location' | 'final-4xx' | 'final-5xx' | 'non-indexable-final' | 'canonical-mismatch';
20679
- type RedirectTraceReport = {
20678
+ export type RedirectTraceIssue = 'redirect-loop' | 'too-many-redirects' | 'redirect-without-location' | 'final-4xx' | 'final-5xx' | 'non-indexable-final' | 'canonical-mismatch';
20679
+ export type RedirectTraceReport = {
20680
20680
  url: string;
20681
20681
  finalUrl: string;
20682
20682
  generatedAt: string;
@@ -20696,7 +20696,7 @@ type RedirectTraceReport = {
20696
20696
  };
20697
20697
  warnings: string[];
20698
20698
  };
20699
- declare function redirectTrace(input: {
20699
+ export declare function redirectTrace(input: {
20700
20700
  url: string;
20701
20701
  maxHops?: number;
20702
20702
  timeoutMs?: number;
@@ -20705,7 +20705,7 @@ declare function redirectTrace(input: {
20705
20705
  }): Promise<RedirectTraceReport>;
20706
20706
  //#endregion
20707
20707
  //#region packages/core/src/analyze/monitoring/link-recover.d.ts
20708
- type LinkRecoverItem = {
20708
+ export type LinkRecoverItem = {
20709
20709
  url: string;
20710
20710
  finalUrl: string;
20711
20711
  clicks: number;
@@ -20717,7 +20717,7 @@ type LinkRecoverItem = {
20717
20717
  trace: Pick<RedirectTraceReport, 'summary' | 'chain' | 'finalPage' | 'warnings'>;
20718
20718
  recommendation: Recommendation;
20719
20719
  };
20720
- type LinkRecoverReport = {
20720
+ export type LinkRecoverReport = {
20721
20721
  site: string;
20722
20722
  generatedAt: string;
20723
20723
  range: {
@@ -20737,14 +20737,14 @@ type LinkRecoverReport = {
20737
20737
  items: LinkRecoverItem[];
20738
20738
  warnings: string[];
20739
20739
  };
20740
- declare function linkRecoverRecommendation(input: {
20740
+ export declare function linkRecoverRecommendation(input: {
20741
20741
  issue: RedirectTraceIssue;
20742
20742
  url: string;
20743
20743
  finalUrl: string;
20744
20744
  clicks: number;
20745
20745
  impressions: number;
20746
20746
  }): Recommendation;
20747
- declare function linkRecover(input: {
20747
+ export declare function linkRecover(input: {
20748
20748
  site: string;
20749
20749
  days?: number;
20750
20750
  limit?: number;
@@ -20755,20 +20755,20 @@ declare function linkRecover(input: {
20755
20755
  }): Promise<LinkRecoverReport>;
20756
20756
  //#endregion
20757
20757
  //#region packages/core/src/analyze/performance-types.d.ts
20758
- type PerformanceRating = 'good' | 'needs-work' | 'poor' | 'unknown';
20759
- type PerformanceMetric = {
20758
+ export type PerformanceRating = 'good' | 'needs-work' | 'poor' | 'unknown';
20759
+ export type PerformanceMetric = {
20760
20760
  value?: number;
20761
20761
  displayValue?: string;
20762
20762
  score?: number;
20763
20763
  rating?: PerformanceRating;
20764
20764
  source?: 'lighthouse-lab' | 'fetch-fallback';
20765
20765
  };
20766
- type PerformanceFieldMetric = {
20766
+ export type PerformanceFieldMetric = {
20767
20767
  p75: number;
20768
20768
  unit: 'milliseconds' | 'score';
20769
20769
  rating: Exclude<PerformanceRating, 'unknown'>;
20770
20770
  };
20771
- type PerformanceFieldData = {
20771
+ export type PerformanceFieldData = {
20772
20772
  source: 'crux';
20773
20773
  status: 'available';
20774
20774
  scope: 'origin' | 'url';
@@ -20791,8 +20791,8 @@ type PerformanceFieldData = {
20791
20791
  missingMetrics: Array<'CLS' | 'INP' | 'LCP'>;
20792
20792
  };
20793
20793
  };
20794
- type LighthouseFailureCode = 'binary_missing' | 'chrome_missing' | 'invalid_result' | 'run_failed' | 'timeout';
20795
- type PerformanceAuditReport = {
20794
+ export type LighthouseFailureCode = 'binary_missing' | 'chrome_missing' | 'invalid_result' | 'run_failed' | 'timeout';
20795
+ export type PerformanceAuditReport = {
20796
20796
  schemaVersion: 1;
20797
20797
  methodology: 'performance-v2';
20798
20798
  dataStatus: 'complete' | 'partial';
@@ -20866,7 +20866,7 @@ type CruxResult = {
20866
20866
  status: PerformanceAuditReport['fieldDataStatus'];
20867
20867
  caveat: string;
20868
20868
  };
20869
- declare function fetchCruxFieldData(input: {
20869
+ export declare function fetchCruxFieldData(input: {
20870
20870
  url: string;
20871
20871
  strategy?: 'desktop' | 'mobile';
20872
20872
  apiKey?: string;
@@ -20875,13 +20875,13 @@ declare function fetchCruxFieldData(input: {
20875
20875
  }): Promise<CruxResult>;
20876
20876
  //#endregion
20877
20877
  //#region packages/core/src/analyze/performance.d.ts
20878
- declare function performanceReportIsCacheable(input: {
20878
+ export declare function performanceReportIsCacheable(input: {
20879
20879
  report: PerformanceAuditReport;
20880
20880
  customCrux?: boolean;
20881
20881
  customLighthouse?: boolean;
20882
20882
  includeRaw?: boolean;
20883
20883
  }): boolean;
20884
- declare function performanceAudit(input: {
20884
+ export declare function performanceAudit(input: {
20885
20885
  url: string;
20886
20886
  strategy?: 'mobile' | 'desktop';
20887
20887
  lighthouseBin?: string;
@@ -20908,11 +20908,11 @@ type QueryClusterPage = {
20908
20908
  impressions: number;
20909
20909
  clicks: number;
20910
20910
  };
20911
- declare function queryClusterTokens(query: string): string[];
20912
- declare function clusterQueryRows(rows: QueryClusterRow[]): QueryClusterRow[][];
20911
+ export declare function queryClusterTokens(query: string): string[];
20912
+ export declare function clusterQueryRows(rows: QueryClusterRow[]): QueryClusterRow[][];
20913
20913
  //#endregion
20914
20914
  //#region packages/core/src/analyze/query-cluster-analysis.d.ts
20915
- declare function analyzeQueryClustersFromRows(input: {
20915
+ export declare function analyzeQueryClustersFromRows(input: {
20916
20916
  rows: QueryClusterRow[];
20917
20917
  brand?: string;
20918
20918
  minImpressions?: number;
@@ -20930,7 +20930,7 @@ declare function analyzeQueryClustersFromRows(input: {
20930
20930
  };
20931
20931
  //#endregion
20932
20932
  //#region packages/core/src/analyze/query-cluster.d.ts
20933
- type QueryClusterReport = {
20933
+ export type QueryClusterReport = {
20934
20934
  site: string;
20935
20935
  scope?: string;
20936
20936
  range: {
@@ -20953,8 +20953,8 @@ type QueryClusterReport = {
20953
20953
  caveats: string[];
20954
20954
  recommendations: string[];
20955
20955
  };
20956
- type QueryClusterSourceRow = Awaited<ReturnType<typeof querySearchAnalytics>>['rows'][number];
20957
- declare function queryClusterReport(input: {
20956
+ export type QueryClusterSourceRow = Awaited<ReturnType<typeof querySearchAnalytics>>['rows'][number];
20957
+ export declare function queryClusterReport(input: {
20958
20958
  site: string;
20959
20959
  days?: number;
20960
20960
  scope?: string;
@@ -20965,7 +20965,7 @@ declare function queryClusterReport(input: {
20965
20965
  limit?: number;
20966
20966
  refresh?: boolean;
20967
20967
  }): Promise<QueryClusterReport>;
20968
- declare function buildQueryClusterReportFromRows(input: {
20968
+ export declare function buildQueryClusterReportFromRows(input: {
20969
20969
  site: string;
20970
20970
  days: number;
20971
20971
  range: {
@@ -20983,11 +20983,11 @@ declare function buildQueryClusterReportFromRows(input: {
20983
20983
  }): QueryClusterReport;
20984
20984
  //#endregion
20985
20985
  //#region packages/core/src/analyze/reports/types.d.ts
20986
- type NarrativeSection = {
20986
+ export type NarrativeSection = {
20987
20987
  title: string;
20988
20988
  bullets: string[];
20989
20989
  };
20990
- type ReportNarrative = {
20990
+ export type ReportNarrative = {
20991
20991
  site: string;
20992
20992
  generatedAt: string;
20993
20993
  dataStatus: DiagnosePropertyReport['dataStatus'];
@@ -21008,7 +21008,7 @@ type ReportNarrative = {
21008
21008
  };
21009
21009
  //#endregion
21010
21010
  //#region packages/core/src/analyze/reports/narrative.d.ts
21011
- declare function reportNarrative(input: {
21011
+ export declare function reportNarrative(input: {
21012
21012
  site: string;
21013
21013
  days?: number;
21014
21014
  recentDays?: number;
@@ -21029,7 +21029,7 @@ declare function reportNarrative(input: {
21029
21029
  }>;
21030
21030
  //#endregion
21031
21031
  //#region packages/core/src/analyze/second-page-report.d.ts
21032
- type SecondPageInput = {
21032
+ export type SecondPageInput = {
21033
21033
  site: string;
21034
21034
  /** Window length in days; ignored when startDate and endDate are given. */
21035
21035
  range?: number;
@@ -21047,7 +21047,7 @@ type SecondPageInput = {
21047
21047
  brandTerms?: string[];
21048
21048
  includeBrand?: boolean;
21049
21049
  };
21050
- type SecondPageDependencies = {
21050
+ export type SecondPageDependencies = {
21051
21051
  searchAnalytics: SearchAnalyticsQuery;
21052
21052
  /** Required only when page verification is requested. */
21053
21053
  fetch?: PageFetcher;
@@ -21055,23 +21055,23 @@ type SecondPageDependencies = {
21055
21055
  extract?: PageExtractor;
21056
21056
  now: () => Date;
21057
21057
  };
21058
- declare function secondPageWith(input: SecondPageInput, dependencies: SecondPageDependencies): Promise<SecondPageReport>;
21058
+ export declare function secondPageWith(input: SecondPageInput, dependencies: SecondPageDependencies): Promise<SecondPageReport>;
21059
21059
  //#endregion
21060
21060
  //#region packages/core/src/analyze/second-page-analysis.d.ts
21061
- declare function analyzeSecondPageRows(input: AnalyzeSecondPageInput): SecondPageAnalysis;
21061
+ export declare function analyzeSecondPageRows(input: AnalyzeSecondPageInput): SecondPageAnalysis;
21062
21062
  //#endregion
21063
21063
  //#region packages/core/src/analyze/second-page.d.ts
21064
- declare function secondPage(input: SecondPageInput, dependencies?: SecondPageDependencies): Promise<SecondPageReport>;
21064
+ export declare function secondPage(input: SecondPageInput, dependencies?: SecondPageDependencies): Promise<SecondPageReport>;
21065
21065
  //#endregion
21066
21066
  //#region packages/core/src/analyze/title-width.d.ts
21067
- declare const SERP_TITLE_REFERENCE_WIDTH_PX = 580;
21068
- declare const SERP_TITLE_WIDTH_PROFILE: {
21067
+ export declare const SERP_TITLE_REFERENCE_WIDTH_PX = 580;
21068
+ export declare const SERP_TITLE_WIDTH_PROFILE: {
21069
21069
  readonly id: "arial-20-v1";
21070
21070
  readonly fontFamily: "Arial";
21071
21071
  readonly fontSizePixels: 20;
21072
21072
  readonly fontWeight: 400;
21073
21073
  };
21074
- type TitleWidthEstimate = {
21074
+ export type TitleWidthEstimate = {
21075
21075
  estimatedPixels: number;
21076
21076
  referencePixels: number;
21077
21077
  status: 'within-reference' | 'near-reference' | 'over-reference';
@@ -21080,20 +21080,20 @@ type TitleWidthEstimate = {
21080
21080
  graphemeCount: number;
21081
21081
  fallbackGraphemes: string[];
21082
21082
  };
21083
- declare function estimateSerpTitleWidth(title: string): TitleWidthEstimate;
21083
+ export declare function estimateSerpTitleWidth(title: string): TitleWidthEstimate;
21084
21084
  //#endregion
21085
21085
  //#region packages/core/src/analyze/workflows/types.d.ts
21086
- type WorkflowStep = {
21086
+ export type WorkflowStep = {
21087
21087
  tool: string;
21088
21088
  status: 'completed' | 'skipped';
21089
21089
  summary: string;
21090
21090
  };
21091
- type WorkflowAction = {
21091
+ export type WorkflowAction = {
21092
21092
  title: string;
21093
21093
  action: string;
21094
21094
  confidence: 'high' | 'medium' | 'low';
21095
21095
  };
21096
- type WorkflowReport<TOutput> = {
21096
+ export type WorkflowReport<TOutput> = {
21097
21097
  workflow: string;
21098
21098
  site: string;
21099
21099
  generatedAt: string;
@@ -21102,7 +21102,7 @@ type WorkflowReport<TOutput> = {
21102
21102
  actions: WorkflowAction[];
21103
21103
  output: TOutput;
21104
21104
  };
21105
- type PriorityQueueItem = {
21105
+ export type PriorityQueueItem = {
21106
21106
  source: 'decay' | 'striking-distance' | 'quick-win' | 'cannibalization' | 'diagnosis' | 'template' | 'crawl';
21107
21107
  title: string;
21108
21108
  target: string;
@@ -21154,7 +21154,7 @@ type PriorityQueueItem = {
21154
21154
  };
21155
21155
  //#endregion
21156
21156
  //#region packages/core/src/analyze/workflows/crawl-implementation-queue.d.ts
21157
- type CrawlImplementationQueueItem = PriorityQueueItem & {
21157
+ export type CrawlImplementationQueueItem = PriorityQueueItem & {
21158
21158
  ruleId: string;
21159
21159
  severity: RuleSeverity;
21160
21160
  affectedUrls: number;
@@ -21162,20 +21162,20 @@ type CrawlImplementationQueueItem = PriorityQueueItem & {
21162
21162
  whyThisRanks: string;
21163
21163
  verification: TopFix['verification'];
21164
21164
  };
21165
- type CrawlImplementationQueueOutput = {
21165
+ export type CrawlImplementationQueueOutput = {
21166
21166
  queue: CrawlImplementationQueueItem[];
21167
21167
  warnings: string[];
21168
21168
  crawl: CrawlReport;
21169
21169
  topFixes: TopFix[];
21170
21170
  };
21171
- type CrawlImplementationQueueInput = CrawlConfigInput & {
21171
+ export type CrawlImplementationQueueInput = CrawlConfigInput & {
21172
21172
  limit?: number;
21173
21173
  };
21174
- declare function crawlFixToQueueItem(fix: TopFix): CrawlImplementationQueueItem;
21175
- declare function crawlImplementationQueueWorkflow(input: CrawlImplementationQueueInput, dependencies?: CrawlSiteDependencies): Promise<WorkflowReport<CrawlImplementationQueueOutput>>;
21174
+ export declare function crawlFixToQueueItem(fix: TopFix): CrawlImplementationQueueItem;
21175
+ export declare function crawlImplementationQueueWorkflow(input: CrawlImplementationQueueInput, dependencies?: CrawlSiteDependencies): Promise<WorkflowReport<CrawlImplementationQueueOutput>>;
21176
21176
  //#endregion
21177
21177
  //#region packages/core/src/analyze/workflows/diagnose-property.d.ts
21178
- declare function diagnosePropertyWorkflow(input: {
21178
+ export declare function diagnosePropertyWorkflow(input: {
21179
21179
  site: string;
21180
21180
  days?: number;
21181
21181
  recentDays?: number;
@@ -21189,24 +21189,24 @@ declare function diagnosePropertyWorkflow(input: {
21189
21189
  }>>;
21190
21190
  //#endregion
21191
21191
  //#region packages/core/src/analyze/workflows/markdown.d.ts
21192
- declare function renderWorkflowMarkdown(report: WorkflowReport<unknown>, options?: {
21192
+ export declare function renderWorkflowMarkdown(report: WorkflowReport<unknown>, options?: {
21193
21193
  queueLimit?: number;
21194
21194
  }): string;
21195
21195
  //#endregion
21196
21196
  //#region packages/core/src/presentation.d.ts
21197
- type PresentationScalar = boolean | number | string | null;
21198
- type PresentationTableColumn = {
21197
+ export type PresentationScalar = boolean | number | string | null;
21198
+ export type PresentationTableColumn = {
21199
21199
  key: string;
21200
21200
  label: string;
21201
21201
  type?: 'number' | 'string' | 'url';
21202
21202
  };
21203
- type PresentationTable = {
21203
+ export type PresentationTable = {
21204
21204
  id: string;
21205
21205
  title: string;
21206
21206
  columns: PresentationTableColumn[];
21207
21207
  rows: Array<Record<string, PresentationScalar>>;
21208
21208
  };
21209
- type PresentationChart = {
21209
+ export type PresentationChart = {
21210
21210
  id: string;
21211
21211
  title: string;
21212
21212
  type: 'bar';
@@ -21214,13 +21214,13 @@ type PresentationChart = {
21214
21214
  xKey: string;
21215
21215
  yKey: string;
21216
21216
  };
21217
- type Presentation = {
21217
+ export type Presentation = {
21218
21218
  tables: PresentationTable[];
21219
21219
  charts: PresentationChart[];
21220
21220
  };
21221
21221
  //#endregion
21222
21222
  //#region packages/core/src/analyze/workflows/presentation.d.ts
21223
- declare function workflowPresentation(report: WorkflowReport<unknown>, options?: {
21223
+ export declare function workflowPresentation(report: WorkflowReport<unknown>, options?: {
21224
21224
  queueLimit?: number;
21225
21225
  }): Presentation;
21226
21226
  //#endregion
@@ -21234,7 +21234,7 @@ type QueueDraft = Omit<PriorityQueueItem, 'category' | 'score' | 'impact' | 'sco
21234
21234
  effort?: 'S' | 'M' | 'L';
21235
21235
  verification?: Parameters<typeof priorityCategory>[1];
21236
21236
  };
21237
- declare function decayClusterDrafts(input: {
21237
+ export declare function decayClusterDrafts(input: {
21238
21238
  groups: Array<{
21239
21239
  label: string;
21240
21240
  diagnosis: 'lost_position' | 'lost_ctr' | 'lost_impressions' | 'lost_clicks';
@@ -21250,7 +21250,7 @@ declare function decayClusterDrafts(input: {
21250
21250
  }>;
21251
21251
  site: string;
21252
21252
  }): QueueDraft[];
21253
- declare function refreshPrioritiesWorkflow(input: {
21253
+ export declare function refreshPrioritiesWorkflow(input: {
21254
21254
  site: string;
21255
21255
  days?: number;
21256
21256
  recentDays?: number;
@@ -21328,8 +21328,8 @@ type PostmortemOutput = {
21328
21328
  country: SplitSegment;
21329
21329
  };
21330
21330
  };
21331
- declare function inferTemplateMovement(pageSegment: Pick<SplitSegment, 'winners' | 'losers' | 'coverage'>): TemplateMovement[];
21332
- declare function updatePostmortemWorkflow(input: {
21331
+ export declare function inferTemplateMovement(pageSegment: Pick<SplitSegment, 'winners' | 'losers' | 'coverage'>): TemplateMovement[];
21332
+ export declare function updatePostmortemWorkflow(input: {
21333
21333
  site: string;
21334
21334
  days?: number;
21335
21335
  recentDays?: number;
@@ -21344,24 +21344,24 @@ declare function updatePostmortemWorkflow(input: {
21344
21344
  }): Promise<WorkflowReport<PostmortemOutput>>;
21345
21345
  //#endregion
21346
21346
  //#region packages/core/src/brand.d.ts
21347
- declare function normalizeBrandText(value: string): string;
21347
+ export declare function normalizeBrandText(value: string): string;
21348
21348
  /**
21349
21349
  * The registrable part of a Search Console property host, using the small
21350
21350
  * built-in list of country-code second levels. `sc-domain:docs.example.co.uk`
21351
21351
  * returns `{ domain: 'example.co.uk', stem: 'example', suffix: 'co.uk' }`.
21352
21352
  */
21353
- declare function registrableDomain(siteUrl: string): {
21353
+ export declare function registrableDomain(siteUrl: string): {
21354
21354
  domain: string;
21355
21355
  stem: string;
21356
21356
  suffix: string;
21357
21357
  } | undefined;
21358
- declare function deriveBrandTerms(input: {
21358
+ export declare function deriveBrandTerms(input: {
21359
21359
  id?: string;
21360
21360
  name?: string;
21361
21361
  siteUrl: string;
21362
21362
  }): string[];
21363
- declare function isBrandQuery(query: string, brandTerms: string[]): boolean;
21364
- declare function shouldExcludeBrandQuery(input: {
21363
+ export declare function isBrandQuery(query: string, brandTerms: string[]): boolean;
21364
+ export declare function shouldExcludeBrandQuery(input: {
21365
21365
  query: string;
21366
21366
  siteUrl: string;
21367
21367
  brandTerms?: string[];
@@ -21376,12 +21376,12 @@ type BrandEvidence = {
21376
21376
  ctr: number;
21377
21377
  position: number;
21378
21378
  };
21379
- type BrandTermCandidate = {
21379
+ export type BrandTermCandidate = {
21380
21380
  term: string;
21381
21381
  score: number;
21382
21382
  evidence: BrandEvidence[];
21383
21383
  };
21384
- declare function detectBrandTerms(input: {
21384
+ export declare function detectBrandTerms(input: {
21385
21385
  site: string;
21386
21386
  id?: string;
21387
21387
  name?: string;
@@ -21398,88 +21398,47 @@ declare function detectBrandTerms(input: {
21398
21398
  }>;
21399
21399
  //#endregion
21400
21400
  //#region packages/core/src/storage/provider-secrets.d.ts
21401
- declare const PROVIDER_SECRET_NAMES: {
21401
+ export declare const PROVIDER_SECRET_NAMES: {
21402
21402
  readonly ahrefsApiKey: "ahrefs-api-key";
21403
21403
  readonly bingApiKey: "bing-api-key";
21404
21404
  readonly clickySiteKeys: "clicky-sitekeys";
21405
21405
  readonly dataForSeoCredentials: "dataforseo-credentials";
21406
21406
  readonly providerExtensionCredentials: "provider-extension-credentials";
21407
21407
  };
21408
- declare const MANAGED_PROVIDER_SECRET_NAMES: readonly string[];
21409
- type ProviderSecretSource = 'environment' | 'keychain' | 'file';
21410
- type ProviderSecret = {
21408
+ export declare const MANAGED_PROVIDER_SECRET_NAMES: readonly string[];
21409
+ export type ProviderSecretSource = 'environment' | 'keychain' | 'file';
21410
+ export type ProviderSecret = {
21411
21411
  value: string;
21412
21412
  source: ProviderSecretSource;
21413
21413
  };
21414
- declare function readProviderSecret(input: {
21414
+ export declare function readProviderSecret(input: {
21415
21415
  name: string;
21416
21416
  envVar?: string;
21417
21417
  env?: NodeJS.ProcessEnv;
21418
21418
  }): Promise<ProviderSecret | undefined>;
21419
- declare function writeProviderSecret(name: string, value: string): Promise<Exclude<ProviderSecretSource, 'environment'>>;
21420
- declare function deleteProviderSecret(name: string): Promise<void>;
21421
- declare function deleteManagedProviderSecrets(): Promise<void>;
21419
+ export declare function writeProviderSecret(name: string, value: string): Promise<Exclude<ProviderSecretSource, 'environment'>>;
21420
+ export declare function deleteProviderSecret(name: string): Promise<void>;
21421
+ export declare function deleteManagedProviderSecrets(): Promise<void>;
21422
21422
  //#endregion
21423
21423
  //#region packages/core/src/clicky/credentials.d.ts
21424
- declare const CLICKY_SITEKEY_ENV = "SEO_CLICKY_SITEKEY";
21425
- declare const CLICKY_SITE_KEYS_SECRET: "clicky-sitekeys";
21426
- type StoredClickySiteKey = {
21424
+ export declare const CLICKY_SITEKEY_ENV = "SEO_CLICKY_SITEKEY";
21425
+ export declare const CLICKY_SITE_KEYS_SECRET: "clicky-sitekeys";
21426
+ export type StoredClickySiteKey = {
21427
21427
  siteKey: string;
21428
21428
  source: ProviderSecretSource;
21429
21429
  };
21430
- declare function normalizeClickySiteId(value: string): string;
21431
- declare function normalizeClickySiteKey(value: string): string;
21432
- declare function readClickySiteKeys(): Promise<Record<string, string>>;
21433
- declare function readClickySiteKey(siteIdValue: string, input?: {
21430
+ export declare function normalizeClickySiteId(value: string): string;
21431
+ export declare function normalizeClickySiteKey(value: string): string;
21432
+ export declare function readClickySiteKeys(): Promise<Record<string, string>>;
21433
+ export declare function readClickySiteKey(siteIdValue: string, input?: {
21434
21434
  env?: NodeJS.ProcessEnv;
21435
21435
  }): Promise<StoredClickySiteKey | undefined>;
21436
- declare function writeClickySiteKey(siteIdValue: string, siteKeyValue: string): Promise<Exclude<ProviderSecretSource, 'environment'>>;
21437
- declare function deleteClickySiteKey(siteIdValue: string): Promise<void>;
21436
+ export declare function writeClickySiteKey(siteIdValue: string, siteKeyValue: string): Promise<Exclude<ProviderSecretSource, 'environment'>>;
21437
+ export declare function deleteClickySiteKey(siteIdValue: string): Promise<void>;
21438
21438
  //#endregion
21439
21439
  //#region packages/core/src/bing/api.d.ts
21440
21440
  type BingCall = (method: string, params?: Record<string, string>) => Promise<unknown>;
21441
21441
  //#endregion
21442
- //#region packages/core/src/cloud.d.ts
21443
- declare const CLOUD_URL = "https://seoskill.dev";
21444
- type Pending = {
21445
- device: string;
21446
- code: string;
21447
- url: string;
21448
- expiresAt: number;
21449
- };
21450
- type Token = {
21451
- token: string;
21452
- expiresAt: number;
21453
- } | {
21454
- error: string;
21455
- };
21456
- type CloudCredentials = {
21457
- account: string;
21458
- google: ({
21459
- email: string;
21460
- } & Token)[];
21461
- bing: ({
21462
- label: string;
21463
- } & Token)[];
21464
- keys: Record<string, string>;
21465
- };
21466
- declare function cloudLinked(): boolean;
21467
- declare const CLOUD_SIGN_IN = "Run `seo login` to link this machine to your seoskill.dev account again.";
21468
- declare function cloudCredentials(options?: {
21469
- refreshClicky?: boolean;
21470
- }): Promise<CloudCredentials>;
21471
- declare function notSignedIn(): string;
21472
- declare function cloudGoogleToken(email?: string): Promise<string>;
21473
- declare function cloudGoogleEmails(): Promise<string[]>;
21474
- declare function cloudAccountFor(site: string): Promise<string | undefined>;
21475
- declare function cloudBing(): Promise<BingCall | null>;
21476
- declare function cloudKeys(): Promise<Record<string, string>>;
21477
- declare function startCloudLogin(): Promise<Pending>;
21478
- declare function pendingCloudLogin(): Pending | null;
21479
- declare function finishCloudLogin(): Promise<'linked' | 'pending' | 'expired'>;
21480
- declare function cloudLogout(): Promise<boolean>;
21481
- declare function openCloudLink(url: string): Promise<void>;
21482
- //#endregion
21483
21442
  //#region packages/core/src/commands/sites.d.ts
21484
21443
  type GoogleAccount = {
21485
21444
  email: string | null;
@@ -21492,6 +21451,151 @@ type AnalyticsAccess = {
21492
21451
  signIn: string;
21493
21452
  };
21494
21453
  //#endregion
21454
+ //#region packages/core/src/commands/audit-checks.d.ts
21455
+ type AuditCheckRow = {
21456
+ url: string;
21457
+ in_sitemap: boolean;
21458
+ clicks: number;
21459
+ previous_clicks: number;
21460
+ impressions: number;
21461
+ lost: boolean;
21462
+ checked_at: number | null;
21463
+ property: string | null;
21464
+ verdict: string | null;
21465
+ coverage: string | null;
21466
+ indexing: string | null;
21467
+ last_crawl: string | null;
21468
+ google_canonical: string | null;
21469
+ user_canonical: string | null;
21470
+ prev_coverage: string | null;
21471
+ changed_at: number | null;
21472
+ error: string | null;
21473
+ top: boolean;
21474
+ transition: 'dropped' | 'returned' | null;
21475
+ transition_at: number | null;
21476
+ };
21477
+ type AuditChecks = {
21478
+ property: string;
21479
+ origin: string | null;
21480
+ known: number;
21481
+ covered: number;
21482
+ queued: {
21483
+ lost: number;
21484
+ search: number;
21485
+ sitemap: number;
21486
+ stale: number;
21487
+ total: number;
21488
+ };
21489
+ eta_hours: number | null;
21490
+ per_day: number;
21491
+ top_per_day: number;
21492
+ properties: {
21493
+ property: string;
21494
+ urls: number;
21495
+ top: number;
21496
+ cycle_days: number;
21497
+ used_today: number;
21498
+ }[];
21499
+ suggestions: {
21500
+ property: string;
21501
+ urls: number;
21502
+ gain: number;
21503
+ }[];
21504
+ reasons: {
21505
+ verdict: string | null;
21506
+ coverage: string | null;
21507
+ urls: number;
21508
+ changed_this_week: number;
21509
+ }[];
21510
+ changed_this_week: number;
21511
+ dropped_this_week: number;
21512
+ returned_this_week: number;
21513
+ rows: AuditCheckRow[];
21514
+ total_rows: number;
21515
+ offset: number;
21516
+ stopped: string | null;
21517
+ started: boolean;
21518
+ as_of: number;
21519
+ };
21520
+ //#endregion
21521
+ //#region packages/core/src/commands/audit.d.ts
21522
+ type AuditSummary = {
21523
+ status: 'done' | 'failed';
21524
+ complete: boolean;
21525
+ pages: {
21526
+ known: number;
21527
+ fetched: number;
21528
+ failed: number;
21529
+ blocked: number;
21530
+ queued: number;
21531
+ links_past_cap: number;
21532
+ };
21533
+ findings: {
21534
+ open: number;
21535
+ new: number;
21536
+ reopened: number;
21537
+ resolved: number;
21538
+ by_rule: Record<string, number>;
21539
+ capped_rules: string[];
21540
+ resolution: 'all' | 'crawled-pages-only';
21541
+ };
21542
+ changes: {
21543
+ compared: boolean;
21544
+ new_urls: number;
21545
+ gone_urls: number;
21546
+ status_changed: number;
21547
+ title_changed: number;
21548
+ };
21549
+ };
21550
+ type AuditFinding = {
21551
+ rule: string;
21552
+ subject: string;
21553
+ details: string;
21554
+ state: 'open' | 'resolved';
21555
+ first_seen_at: number;
21556
+ reopened_at: number | null;
21557
+ resolved_at: number | null;
21558
+ };
21559
+ type AuditSnapshot = {
21560
+ property: string;
21561
+ origin: string | null;
21562
+ run: {
21563
+ id: string;
21564
+ status: 'running' | 'done' | 'failed';
21565
+ started_at: number;
21566
+ finished_at: number | null;
21567
+ fetched: number;
21568
+ error: string | null;
21569
+ } | null;
21570
+ summary: AuditSummary | null;
21571
+ finished_at: number | null;
21572
+ findings: AuditFinding[];
21573
+ index_changes?: {
21574
+ dropped: number;
21575
+ returned: number;
21576
+ rows: {
21577
+ url: string;
21578
+ change: 'dropped' | 'returned';
21579
+ at: number;
21580
+ coverage: string | null;
21581
+ top: boolean;
21582
+ }[];
21583
+ };
21584
+ history: {
21585
+ started_at: number;
21586
+ finished_at: number;
21587
+ status: string;
21588
+ open: number;
21589
+ new: number;
21590
+ resolved: number;
21591
+ }[];
21592
+ };
21593
+ type AuditAccess = {
21594
+ snapshot: (site: string) => Promise<AuditSnapshot | null>;
21595
+ checks: (site: string, offset: number, limit: number) => Promise<AuditChecks | null>;
21596
+ add: (site: string) => Promise<'added' | 'exists' | 'full'>;
21597
+ };
21598
+ //#endregion
21495
21599
  //#region packages/core/src/commands/page-facts.d.ts
21496
21600
  type RedirectKind = 'permanent' | 'temporary';
21497
21601
  type LiveCheck = {
@@ -21588,6 +21692,8 @@ type CommandDeps = {
21588
21692
  bing?: () => Promise<BingCall | null>;
21589
21693
  bingConnect?: string;
21590
21694
  analytics?: AnalyticsAccess;
21695
+ audit?: AuditAccess;
21696
+ week?: () => Promise<WeekData | null>;
21591
21697
  now?: () => Date;
21592
21698
  };
21593
21699
  type PageMarkdown = {
@@ -21598,39 +21704,118 @@ type PageMarkdown = {
21598
21704
  error: string;
21599
21705
  };
21600
21706
  //#endregion
21707
+ //#region packages/core/src/commands/week.d.ts
21708
+ type WeekSite = {
21709
+ property: string;
21710
+ link: string | null;
21711
+ added_at: number;
21712
+ crawl: {
21713
+ finished_at: number;
21714
+ status: 'done' | 'failed';
21715
+ error: string | null;
21716
+ pages: number;
21717
+ new_issues: number;
21718
+ top_rule: string | null;
21719
+ } | null;
21720
+ start_error: string | null;
21721
+ index: {
21722
+ checked: number;
21723
+ dropped: number;
21724
+ returned: number;
21725
+ dropped_pages: {
21726
+ url: string;
21727
+ coverage: string | null;
21728
+ }[];
21729
+ } | null;
21730
+ clicks: {
21731
+ start: string;
21732
+ end: string;
21733
+ clicks: number;
21734
+ previous: number;
21735
+ } | null;
21736
+ };
21737
+ type WeekData = {
21738
+ start: string;
21739
+ end: string;
21740
+ account: string;
21741
+ sites: WeekSite[];
21742
+ };
21743
+ //#endregion
21744
+ //#region packages/core/src/cloud.d.ts
21745
+ export declare const CLOUD_URL = "https://seoskill.dev";
21746
+ type Pending = {
21747
+ device: string;
21748
+ code: string;
21749
+ url: string;
21750
+ expiresAt: number;
21751
+ };
21752
+ type Token = {
21753
+ token: string;
21754
+ expiresAt: number;
21755
+ } | {
21756
+ error: string;
21757
+ };
21758
+ export type CloudCredentials = {
21759
+ account: string;
21760
+ google: ({
21761
+ email: string;
21762
+ } & Token)[];
21763
+ bing: ({
21764
+ label: string;
21765
+ } & Token)[];
21766
+ keys: Record<string, string>;
21767
+ };
21768
+ export declare function cloudLinked(): boolean;
21769
+ export declare const CLOUD_SIGN_IN = "Run `seo login` to link this machine to your seoskill.dev account again.";
21770
+ export declare function cloudCredentials(options?: {
21771
+ refreshClicky?: boolean;
21772
+ }): Promise<CloudCredentials>;
21773
+ export declare function cloudWeek(): Promise<WeekData | null>;
21774
+ export declare function notSignedIn(): string;
21775
+ export declare function cloudGoogleToken(email?: string): Promise<string>;
21776
+ export declare function cloudGoogleEmails(): Promise<string[]>;
21777
+ export declare function cloudAccountFor(site: string): Promise<string | undefined>;
21778
+ export declare function cloudBing(): Promise<BingCall | null>;
21779
+ export declare function cloudKeys(): Promise<Record<string, string>>;
21780
+ export declare function startCloudLogin(): Promise<Pending>;
21781
+ export declare function pendingCloudLogin(): Pending | null;
21782
+ export declare function finishCloudLogin(): Promise<'linked' | 'pending' | 'expired'>;
21783
+ export declare function cloudLogout(): Promise<boolean>;
21784
+ export declare function openCloudLink(url: string): Promise<void>;
21785
+ //#endregion
21601
21786
  //#region packages/core/src/storage/config.d.ts
21602
- type TokenStorageMode = 'keychain' | 'file';
21603
- type TokenStorageStatus = {
21787
+ export type TokenStorageMode = 'keychain' | 'file';
21788
+ export type TokenStorageStatus = {
21604
21789
  configured: TokenStorageMode;
21605
21790
  active: TokenStorageMode;
21606
21791
  reason?: string;
21607
21792
  };
21608
- declare function readConfig(): AppConfig;
21609
- declare function writeConfig(config: AppConfig): void;
21610
- declare function readAllTokens(): Promise<StoredTokens[]>;
21611
- declare function readTokens(accountEmail?: string): Promise<StoredTokens | undefined>;
21612
- declare function listGoogleAccounts(): Array<{
21793
+ export declare function readConfig(): AppConfig;
21794
+ export declare function writeConfig(config: AppConfig): void;
21795
+ export declare function readAllTokens(): Promise<StoredTokens[]>;
21796
+ export declare function readTokens(accountEmail?: string): Promise<StoredTokens | undefined>;
21797
+ export declare function listGoogleAccounts(): Array<{
21613
21798
  accountEmail: string;
21614
21799
  scopes: string[];
21615
21800
  expiresAt: number;
21616
21801
  active: boolean;
21617
21802
  }>;
21618
- declare function setActiveGoogleAccount(accountEmail: string): void;
21619
- declare function writeTokens(tokens: StoredTokens, options?: {
21803
+ export declare function setActiveGoogleAccount(accountEmail: string): void;
21804
+ export declare function writeTokens(tokens: StoredTokens, options?: {
21620
21805
  makeActive?: boolean;
21621
21806
  }): Promise<void>;
21622
- declare function deleteTokens(accountEmail?: string): Promise<void>;
21623
- declare function getTokenStorageStatus(): Promise<TokenStorageStatus>;
21624
- declare function setTokenStorageMode(mode: TokenStorageMode): Promise<TokenStorageStatus>;
21625
- declare function readOauthClient(): {
21807
+ export declare function deleteTokens(accountEmail?: string): Promise<void>;
21808
+ export declare function getTokenStorageStatus(): Promise<TokenStorageStatus>;
21809
+ export declare function setTokenStorageMode(mode: TokenStorageMode): Promise<TokenStorageStatus>;
21810
+ export declare function readOauthClient(): {
21626
21811
  clientId: string;
21627
21812
  clientSecret: string;
21628
21813
  } | undefined;
21629
- declare function writeOauthClient(client: {
21814
+ export declare function writeOauthClient(client: {
21630
21815
  clientId: string;
21631
21816
  clientSecret: string;
21632
21817
  }): void;
21633
- declare function getPrivacySnapshot(): Array<{
21818
+ export declare function getPrivacySnapshot(): Array<{
21634
21819
  label: string;
21635
21820
  path: string;
21636
21821
  mode: string;
@@ -21649,22 +21834,22 @@ interface GoogleAccessTokenClient {
21649
21834
  //#endregion
21650
21835
  //#region packages/core/src/gsc/auth/service-account.d.ts
21651
21836
  type ServiceAccountSource = 'environment-json' | 'environment-file' | 'application-default-file';
21652
- type ServiceAccountConfig = {
21837
+ export type ServiceAccountConfig = {
21653
21838
  clientEmail: string;
21654
21839
  privateKey: string;
21655
21840
  privateKeyId?: string;
21656
21841
  source: ServiceAccountSource;
21657
21842
  };
21658
- type ServiceAccountStatus = {
21843
+ export type ServiceAccountStatus = {
21659
21844
  configured: boolean;
21660
21845
  identity?: string;
21661
21846
  source?: ServiceAccountSource;
21662
21847
  error?: string;
21663
21848
  };
21664
21849
  type Environment = Record<string, string | undefined>;
21665
- declare function getServiceAccountConfig(environment?: Environment): ServiceAccountConfig | undefined;
21666
- declare function getServiceAccountStatus(environment?: Environment): ServiceAccountStatus;
21667
- declare class ServiceAccountAccessTokenClient implements GoogleAccessTokenClient {
21850
+ export declare function getServiceAccountConfig(environment?: Environment): ServiceAccountConfig | undefined;
21851
+ export declare function getServiceAccountStatus(environment?: Environment): ServiceAccountStatus;
21852
+ export declare class ServiceAccountAccessTokenClient implements GoogleAccessTokenClient {
21668
21853
  readonly config: ServiceAccountConfig;
21669
21854
  private readonly fetchImpl;
21670
21855
  private token?;
@@ -21673,12 +21858,12 @@ declare class ServiceAccountAccessTokenClient implements GoogleAccessTokenClient
21673
21858
  }
21674
21859
  //#endregion
21675
21860
  //#region packages/core/src/gsc/auth/authorized-client.d.ts
21676
- declare function createAuthorizedClient(accountEmail?: string): Promise<{
21861
+ export declare function createAuthorizedClient(accountEmail?: string): Promise<{
21677
21862
  client: GoogleAccessTokenClient;
21678
21863
  tokens: StoredTokens;
21679
21864
  }>;
21680
- declare function refreshAuthToken(accountEmail?: string): Promise<StoredTokens>;
21681
- type AuthorizedGoogleClient = {
21865
+ export declare function refreshAuthToken(accountEmail?: string): Promise<StoredTokens>;
21866
+ export type AuthorizedGoogleClient = {
21682
21867
  client: GoogleAccessTokenClient;
21683
21868
  mode: 'oauth' | 'service-account' | 'cloud';
21684
21869
  identity: string;
@@ -21688,8 +21873,8 @@ type AuthorizedGoogleClient = {
21688
21873
  };
21689
21874
  tokens?: StoredTokens;
21690
21875
  };
21691
- declare function createGoogleAccessTokenClient(accountEmail?: string): Promise<AuthorizedGoogleClient>;
21692
- declare function authStatus(): Promise<{
21876
+ export declare function createGoogleAccessTokenClient(accountEmail?: string): Promise<AuthorizedGoogleClient>;
21877
+ export declare function authStatus(): Promise<{
21693
21878
  tokens?: StoredTokens;
21694
21879
  accounts: ReturnType<typeof listGoogleAccounts>;
21695
21880
  configured: boolean;
@@ -21701,44 +21886,44 @@ declare function authStatus(): Promise<{
21701
21886
  }>;
21702
21887
  //#endregion
21703
21888
  //#region packages/core/src/gsc/auth/client-config.d.ts
21704
- declare function getAuthModeStatus(): {
21889
+ export declare function getAuthModeStatus(): {
21705
21890
  sharedConfigured: boolean;
21706
21891
  byoConfigured: boolean;
21707
21892
  };
21708
- declare function getClientConfig(source?: OAuthClientConfig['source']): OAuthClientConfig | undefined;
21709
- declare function missingOAuthClientMessage(source: OAuthClientConfig['source']): string;
21893
+ export declare function getClientConfig(source?: OAuthClientConfig['source']): OAuthClientConfig | undefined;
21894
+ export declare function missingOAuthClientMessage(source: OAuthClientConfig['source']): string;
21710
21895
  //#endregion
21711
21896
  //#region packages/core/src/gsc/auth/loopback.d.ts
21712
- declare function missingSharedClientLoginMessage(): string;
21713
- declare function loginWithLoopback(clientConfig?: OAuthClientConfig | undefined): Promise<StoredTokens>;
21897
+ export declare function missingSharedClientLoginMessage(): string;
21898
+ export declare function loginWithLoopback(clientConfig?: OAuthClientConfig | undefined): Promise<StoredTokens>;
21714
21899
  //#endregion
21715
21900
  //#region packages/core/src/gsc/client/fetch.d.ts
21716
- declare const LOCAL_SIGN_IN: {
21901
+ export declare const LOCAL_SIGN_IN: {
21717
21902
  signIn: string;
21718
21903
  };
21719
21904
  //#endregion
21720
21905
  //#region packages/core/src/commands-node.d.ts
21721
- declare function nodeCommandDeps(options: {
21906
+ export declare function nodeCommandDeps(options: {
21722
21907
  call: Caller;
21723
21908
  account?: string;
21724
21909
  refresh?: boolean;
21725
21910
  }): CommandDeps;
21726
- 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).";
21727
- declare function localBing(): Promise<BingCall | null>;
21728
- declare function localAccounts(): Promise<GoogleAccount[]>;
21729
- declare function localResearchKeys(): Promise<Headers>;
21730
- declare const TYPESAFE_API_KEY_ENV = "TYPESAFE_API_KEY";
21731
- declare function localInternalLinksDependencies(options: {
21911
+ 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).";
21912
+ export declare function localBing(): Promise<BingCall | null>;
21913
+ export declare function localAccounts(): Promise<GoogleAccount[]>;
21914
+ export declare function localResearchKeys(): Promise<Headers>;
21915
+ export declare const TYPESAFE_API_KEY_ENV = "TYPESAFE_API_KEY";
21916
+ export declare function localInternalLinksDependencies(options: {
21732
21917
  site: string;
21733
21918
  refresh?: boolean;
21734
21919
  }): Promise<Pick<InternalLinksDependencies, 'searchConsole' | 'decisionModel'>>;
21735
- declare function localRefreshClicky(): Promise<Headers | null>;
21736
- declare function resolveLocalSite(site: string, options?: {
21920
+ export declare function localRefreshClicky(): Promise<Headers | null>;
21921
+ export declare function resolveLocalSite(site: string, options?: {
21737
21922
  account?: string;
21738
21923
  refresh?: boolean;
21739
21924
  }): Promise<string>;
21740
- declare function localError(error: unknown): unknown;
21741
- declare function localGoogleFetch(account?: string): Promise<GoogleFetch>;
21925
+ export declare function localError(error: unknown): unknown;
21926
+ export declare function localGoogleFetch(account?: string): Promise<GoogleFetch>;
21742
21927
  //#endregion
21743
21928
  //#region packages/core/src/storage/sqlite.d.ts
21744
21929
  type TransactionFunction = (...params: never[]) => unknown;
@@ -21767,20 +21952,20 @@ declare namespace SqliteDatabase {
21767
21952
  }
21768
21953
  //#endregion
21769
21954
  //#region packages/core/src/storage/database.d.ts
21770
- declare function ensurePrivateDatabaseFiles(path: string): void;
21771
- declare function getDb(): SqliteDatabase.Database;
21772
- declare function cacheDb(): SqliteDatabase.Database;
21773
- declare function writeToCache(write: (database: SqliteDatabase.Database) => void): void;
21774
- declare function noteCacheWrite(sizeBytes?: number, database?: SqliteDatabase.Database): void;
21775
- declare function checkDatabaseReadiness(): {
21955
+ export declare function ensurePrivateDatabaseFiles(path: string): void;
21956
+ export declare function getDb(): SqliteDatabase.Database;
21957
+ export declare function cacheDb(): SqliteDatabase.Database;
21958
+ export declare function writeToCache(write: (database: SqliteDatabase.Database) => void): void;
21959
+ export declare function noteCacheWrite(sizeBytes?: number, database?: SqliteDatabase.Database): void;
21960
+ export declare function checkDatabaseReadiness(): {
21776
21961
  dbPath: string;
21777
21962
  };
21778
- declare function hashKey(parts: unknown[]): string;
21779
- declare function getCacheStats(): CacheStats;
21780
- declare function clearCache(provider?: 'gsc' | 'google-analytics' | 'dataforseo' | 'ahrefs' | 'clicky' | 'http', olderThanMs?: number): number;
21963
+ export declare function hashKey(parts: unknown[]): string;
21964
+ export declare function getCacheStats(): CacheStats;
21965
+ export declare function clearCache(provider?: 'gsc' | 'google-analytics' | 'dataforseo' | 'ahrefs' | 'clicky' | 'http', olderThanMs?: number): number;
21781
21966
  //#endregion
21782
21967
  //#region packages/core/src/doctor.d.ts
21783
- type DoctorCheck = {
21968
+ export type DoctorCheck = {
21784
21969
  id: string;
21785
21970
  label: string;
21786
21971
  status: 'pass' | 'warn' | 'fail';
@@ -21790,24 +21975,24 @@ type DoctorCheck = {
21790
21975
  type DoctorDependencies = {
21791
21976
  checkDatabase?: typeof checkDatabaseReadiness;
21792
21977
  };
21793
- declare function runDoctor(dependencies?: DoctorDependencies): Promise<{
21978
+ export declare function runDoctor(dependencies?: DoctorDependencies): Promise<{
21794
21979
  ok: boolean;
21795
21980
  generatedAt: string;
21796
21981
  checks: DoctorCheck[];
21797
21982
  }>;
21798
21983
  //#endregion
21799
21984
  //#region packages/core/src/export/csv.d.ts
21800
- type CsvValue = string | number | boolean | null | undefined;
21801
- type CsvRow = Record<string, CsvValue>;
21802
- type CsvFile = {
21985
+ export type CsvValue = string | number | boolean | null | undefined;
21986
+ export type CsvRow = Record<string, CsvValue>;
21987
+ export type CsvFile = {
21803
21988
  filename: string;
21804
21989
  headers?: string[];
21805
21990
  rows: CsvRow[];
21806
21991
  };
21807
- declare function renderCsv(rows: CsvRow[], headers?: string[]): string;
21808
- declare function quickWinsCsvRows(report: DiagnosePropertyReport['quickWins']): CsvRow[];
21809
- declare function diagnoseCsvFiles(report: DiagnosePropertyReport): CsvFile[];
21810
- declare function refreshPrioritiesCsvFiles(report: WorkflowReport<{
21992
+ export declare function renderCsv(rows: CsvRow[], headers?: string[]): string;
21993
+ export declare function quickWinsCsvRows(report: DiagnosePropertyReport['quickWins']): CsvRow[];
21994
+ export declare function diagnoseCsvFiles(report: DiagnosePropertyReport): CsvFile[];
21995
+ export declare function refreshPrioritiesCsvFiles(report: WorkflowReport<{
21811
21996
  queue: PriorityQueueItem[];
21812
21997
  warnings: string[];
21813
21998
  diagnosis: DiagnosePropertyReport;
@@ -21891,52 +22076,52 @@ type SegmentItem = {
21891
22076
  afterPosition: number | null;
21892
22077
  positionDelta: number | null;
21893
22078
  };
21894
- declare function updatePostmortemCsvFiles(report: PostmortemCsvReport): CsvFile[];
22079
+ export declare function updatePostmortemCsvFiles(report: PostmortemCsvReport): CsvFile[];
21895
22080
  //#endregion
21896
22081
  //#region packages/core/src/ga4/matching.d.ts
21897
- type Ga4WebStreamCandidate = {
22082
+ export type Ga4WebStreamCandidate = {
21898
22083
  account: string;
21899
22084
  property: string;
21900
22085
  propertyName: string;
21901
22086
  stream: Ga4DataStream;
21902
22087
  };
21903
- type Ga4WebStreamMatch = Ga4WebStreamCandidate & {
22088
+ export type Ga4WebStreamMatch = Ga4WebStreamCandidate & {
21904
22089
  defaultUri: string;
21905
22090
  hostname: string;
21906
22091
  match: 'domain' | 'hostname';
21907
22092
  };
21908
- declare function matchGa4WebStreams(site: string, candidates: Ga4WebStreamCandidate[]): Ga4WebStreamMatch[];
21909
- declare function ga4MatchReason(match: Ga4WebStreamMatch, site: string): string;
22093
+ export declare function matchGa4WebStreams(site: string, candidates: Ga4WebStreamCandidate[]): Ga4WebStreamMatch[];
22094
+ export declare function ga4MatchReason(match: Ga4WebStreamMatch, site: string): string;
21910
22095
  //#endregion
21911
22096
  //#region packages/core/src/gsc/dates.d.ts
21912
- declare const GSC_TIME_ZONE = "America/Los_Angeles";
21913
- declare const GSC_FINAL_DATA_LAG_DAYS = 4;
21914
- declare function shiftIsoDate(date: string, days: number): string;
21915
- declare function latestFinalGscDate(now?: Date): string;
21916
- declare function finalGscDateRange(days?: number, now?: Date): {
22097
+ export declare const GSC_TIME_ZONE = "America/Los_Angeles";
22098
+ export declare const GSC_FINAL_DATA_LAG_DAYS = 4;
22099
+ export declare function shiftIsoDate(date: string, days: number): string;
22100
+ export declare function latestFinalGscDate(now?: Date): string;
22101
+ export declare function finalGscDateRange(days?: number, now?: Date): {
21917
22102
  startDate: string;
21918
22103
  endDate: string;
21919
22104
  };
21920
22105
  //#endregion
21921
22106
  //#region packages/core/src/gsc/local-export.d.ts
21922
- declare const DEFAULT_SEARCH_CONSOLE_EXPORT_ROW_LIMIT = 5000;
21923
- declare const MAX_SEARCH_CONSOLE_EXPORT_ROW_LIMIT = 100000;
21924
- declare const MAX_SEARCH_CONSOLE_EXPORT_FILES = 20;
21925
- type SearchConsoleExportQueryRow = {
22107
+ export declare const DEFAULT_SEARCH_CONSOLE_EXPORT_ROW_LIMIT = 5000;
22108
+ export declare const MAX_SEARCH_CONSOLE_EXPORT_ROW_LIMIT = 100000;
22109
+ export declare const MAX_SEARCH_CONSOLE_EXPORT_FILES = 20;
22110
+ export type SearchConsoleExportQueryRow = {
21926
22111
  query: string;
21927
22112
  clicks: number;
21928
22113
  impressions: number;
21929
22114
  ctr: number | null;
21930
22115
  position: number | null;
21931
22116
  };
21932
- type SearchConsoleExportPageRow = {
22117
+ export type SearchConsoleExportPageRow = {
21933
22118
  url: string;
21934
22119
  clicks: number;
21935
22120
  impressions: number;
21936
22121
  ctr: number | null;
21937
22122
  position: number | null;
21938
22123
  };
21939
- type SearchConsoleExportFileImport = {
22124
+ export type SearchConsoleExportFileImport = {
21940
22125
  path: string;
21941
22126
  table: 'queries' | 'pages' | 'unrecognized';
21942
22127
  sha256: string;
@@ -21954,7 +22139,7 @@ type SearchConsoleExportFileImport = {
21954
22139
  rowLimit: number;
21955
22140
  reason?: string;
21956
22141
  };
21957
- type SearchConsoleExportEvidence = {
22142
+ export type SearchConsoleExportEvidence = {
21958
22143
  source: 'search-console-export';
21959
22144
  exportedAt: string | null;
21960
22145
  importedAt: string;
@@ -21972,7 +22157,7 @@ type SearchConsoleExportEvidence = {
21972
22157
  warnings: string[];
21973
22158
  caveats: string[];
21974
22159
  };
21975
- declare function loadSearchConsoleExport(input: {
22160
+ export declare function loadSearchConsoleExport(input: {
21976
22161
  path: string;
21977
22162
  rowLimit?: number;
21978
22163
  now?: Date;
@@ -21980,8 +22165,8 @@ declare function loadSearchConsoleExport(input: {
21980
22165
  }): Promise<SearchConsoleExportEvidence>;
21981
22166
  //#endregion
21982
22167
  //#region packages/core/src/gsc/local-export-reconcile.d.ts
21983
- declare const DEFAULT_UNREACHED_PAGE_LIMIT = 100;
21984
- type SearchConsoleExportReconciliation = {
22168
+ export declare const DEFAULT_UNREACHED_PAGE_LIMIT = 100;
22169
+ export type SearchConsoleExportReconciliation = {
21985
22170
  joinBasis: 'path';
21986
22171
  crawlOrigin: string;
21987
22172
  exportOrigins: string[];
@@ -21991,7 +22176,7 @@ type SearchConsoleExportReconciliation = {
21991
22176
  unreachedCount: number;
21992
22177
  capped: boolean;
21993
22178
  };
21994
- declare function reconcileExportPagesWithCrawl(input: {
22179
+ export declare function reconcileExportPagesWithCrawl(input: {
21995
22180
  pages: SearchConsoleExportPageRow[];
21996
22181
  crawledUrls: string[];
21997
22182
  crawlOrigin: string;
@@ -21999,24 +22184,24 @@ declare function reconcileExportPagesWithCrawl(input: {
21999
22184
  }): SearchConsoleExportReconciliation;
22000
22185
  //#endregion
22001
22186
  //#region packages/core/src/gsc/property-url.d.ts
22002
- declare function normalizeHttpUrl(value: string): string;
22003
- declare function assertUrlMatchesGscProperty(property: string, value: string): string;
22187
+ export declare function normalizeHttpUrl(value: string): string;
22188
+ export declare function assertUrlMatchesGscProperty(property: string, value: string): string;
22004
22189
  //#endregion
22005
22190
  //#region packages/core/src/http/read-json.d.ts
22006
- declare function readJson<T = unknown>(response: Response, label: string, options?: {
22191
+ export declare function readJson<T = unknown>(response: Response, label: string, options?: {
22007
22192
  maxBytes?: number;
22008
22193
  }): Promise<T>;
22009
- declare function readJsonOrUndefined<T = unknown>(response: Response, label: string): Promise<T | undefined>;
22194
+ export declare function readJsonOrUndefined<T = unknown>(response: Response, label: string): Promise<T | undefined>;
22010
22195
  //#endregion
22011
22196
  //#region packages/core/src/logger.d.ts
22012
- declare function createLogger(runId: string): pino.Logger;
22013
- declare function makeRunId(): string;
22197
+ export declare function createLogger(runId: string): pino.Logger;
22198
+ export declare function makeRunId(): string;
22014
22199
  //#endregion
22015
22200
  //#region packages/core/src/markdown.d.ts
22016
- declare function renderPresentationTablesMarkdown(tables: PresentationTable[]): string[];
22201
+ export declare function renderPresentationTablesMarkdown(tables: PresentationTable[]): string[];
22017
22202
  //#endregion
22018
22203
  //#region packages/core/src/paths.d.ts
22019
- interface SeoCliPaths {
22204
+ export interface SeoCliPaths {
22020
22205
  configDir: string;
22021
22206
  cacheDir: string;
22022
22207
  logDir: string;
@@ -22029,29 +22214,29 @@ interface SeoCliPaths {
22029
22214
  telemetryStateFile: string;
22030
22215
  cacheDbFile: string;
22031
22216
  }
22032
- type SeoCliPathOptions = {
22217
+ export type SeoCliPathOptions = {
22033
22218
  env?: NodeJS.ProcessEnv;
22034
22219
  home?: string;
22035
22220
  platform?: NodeJS.Platform;
22036
22221
  };
22037
- declare function resolveSeoCliPaths(input?: SeoCliPathOptions): SeoCliPaths;
22038
- declare function migrateLegacyMacConfig(input?: SeoCliPathOptions): void;
22039
- declare function getSeoCliPaths(): SeoCliPaths;
22040
- declare function ensureSeoCliDirs(): SeoCliPaths;
22041
- declare function fileSize(path: string): number;
22222
+ export declare function resolveSeoCliPaths(input?: SeoCliPathOptions): SeoCliPaths;
22223
+ export declare function migrateLegacyMacConfig(input?: SeoCliPathOptions): void;
22224
+ export declare function getSeoCliPaths(): SeoCliPaths;
22225
+ export declare function ensureSeoCliDirs(): SeoCliPaths;
22226
+ export declare function fileSize(path: string): number;
22042
22227
  //#endregion
22043
22228
  //#region packages/core/src/phrasing.d.ts
22044
- declare function plural(count: number, singular: string, pluralLabel?: string): string;
22045
- declare function countLabel(count: number, singular: string, pluralLabel?: string): string;
22229
+ export declare function plural(count: number, singular: string, pluralLabel?: string): string;
22230
+ export declare function countLabel(count: number, singular: string, pluralLabel?: string): string;
22046
22231
  //#endregion
22047
22232
  //#region packages/core/src/provider-extensions/actions.d.ts
22048
- type ProviderActionResult = {
22233
+ export type ProviderActionResult = {
22049
22234
  provider: string;
22050
22235
  action: string;
22051
22236
  cache: 'hit' | 'miss' | 'bypass' | 'disabled';
22052
22237
  data: unknown;
22053
22238
  };
22054
- declare function runProviderExtensionAction(input: {
22239
+ export declare function runProviderExtensionAction(input: {
22055
22240
  providerId: string;
22056
22241
  actionId: string;
22057
22242
  account: Readonly<Record<string, string>>;
@@ -22062,29 +22247,29 @@ declare function runProviderExtensionAction(input: {
22062
22247
  }): Promise<ProviderActionResult>;
22063
22248
  //#endregion
22064
22249
  //#region packages/core/src/provider-extensions/connections.d.ts
22065
- declare function readProviderExtensionAccount(providerIdValue: string): Record<string, string>;
22066
- declare function writeProviderExtensionAccount(providerIdValue: string, account: Readonly<Record<string, string>>): Record<string, string>;
22067
- declare function deleteProviderExtensionAccount(providerIdValue: string): void;
22250
+ export declare function readProviderExtensionAccount(providerIdValue: string): Record<string, string>;
22251
+ export declare function writeProviderExtensionAccount(providerIdValue: string, account: Readonly<Record<string, string>>): Record<string, string>;
22252
+ export declare function deleteProviderExtensionAccount(providerIdValue: string): void;
22068
22253
  //#endregion
22069
22254
  //#region packages/core/src/provider-extensions/credentials.d.ts
22070
- declare function readProviderExtensionCredentials(input: {
22255
+ export declare function readProviderExtensionCredentials(input: {
22071
22256
  providerId: string;
22072
22257
  account: Readonly<Record<string, string>>;
22073
22258
  fields: readonly SeoProviderConnectionField[];
22074
22259
  env?: NodeJS.ProcessEnv;
22075
22260
  }): Promise<Record<string, string>>;
22076
- declare function writeProviderExtensionCredentials(input: {
22261
+ export declare function writeProviderExtensionCredentials(input: {
22077
22262
  providerId: string;
22078
22263
  account: Readonly<Record<string, string>>;
22079
22264
  credentials: Readonly<Record<string, string>>;
22080
22265
  }): Promise<void>;
22081
- declare function deleteProviderExtensionCredentials(input: {
22266
+ export declare function deleteProviderExtensionCredentials(input: {
22082
22267
  providerId: string;
22083
22268
  account: Readonly<Record<string, string>>;
22084
22269
  }): Promise<void>;
22085
22270
  //#endregion
22086
22271
  //#region packages/core/src/provider-extensions/discovery.d.ts
22087
- declare function listInstalledProviderExtensions(): Promise<{
22272
+ export declare function listInstalledProviderExtensions(): Promise<{
22088
22273
  schemaVersion: 1;
22089
22274
  installed: {
22090
22275
  loadStatus: "failed" | "ready";
@@ -22097,7 +22282,7 @@ declare function listInstalledProviderExtensions(): Promise<{
22097
22282
  installedAt: string;
22098
22283
  }[];
22099
22284
  }>;
22100
- declare function describeInstalledProviderExtension(id: string): Promise<{
22285
+ export declare function describeInstalledProviderExtension(id: string): Promise<{
22101
22286
  schemaVersion: 1;
22102
22287
  id: string;
22103
22288
  displayName: string;
@@ -22135,31 +22320,31 @@ declare const providerPackageReleaseSchema: z.ZodObject<{
22135
22320
  repository: z.ZodOptional<z.ZodString>;
22136
22321
  publisher: z.ZodOptional<z.ZodString>;
22137
22322
  }, z.core.$strict>;
22138
- type ProviderPackageRelease = z.infer<typeof providerPackageReleaseSchema>;
22139
- type ProviderPackageCommandResult = {
22323
+ export type ProviderPackageRelease = z.infer<typeof providerPackageReleaseSchema>;
22324
+ export type ProviderPackageCommandResult = {
22140
22325
  stdout: string;
22141
22326
  stderr: string;
22142
22327
  };
22143
- type ProviderPackageCommand = (executable: string, args: readonly string[], options: {
22328
+ export type ProviderPackageCommand = (executable: string, args: readonly string[], options: {
22144
22329
  cwd: string;
22145
22330
  }) => Promise<ProviderPackageCommandResult>;
22146
- type ProviderInstallerOptions = {
22331
+ export type ProviderInstallerOptions = {
22147
22332
  packagesDir?: string;
22148
22333
  now?: () => Date;
22149
22334
  run?: ProviderPackageCommand;
22150
22335
  };
22151
- declare function inspectProviderPackage(value: string, options?: ProviderInstallerOptions): Promise<ProviderPackageRelease>;
22152
- declare function installProviderPackage(input: ProviderPackageRelease, options?: ProviderInstallerOptions): Promise<InstalledProviderPackage>;
22153
- declare function uninstallProviderExtension(id: string, options?: ProviderInstallerOptions): Promise<InstalledProviderPackage | undefined>;
22336
+ export declare function inspectProviderPackage(value: string, options?: ProviderInstallerOptions): Promise<ProviderPackageRelease>;
22337
+ export declare function installProviderPackage(input: ProviderPackageRelease, options?: ProviderInstallerOptions): Promise<InstalledProviderPackage>;
22338
+ export declare function uninstallProviderExtension(id: string, options?: ProviderInstallerOptions): Promise<InstalledProviderPackage | undefined>;
22154
22339
  //#endregion
22155
22340
  //#region packages/core/src/provider-extensions/store.d.ts
22156
- declare function readInstalledProviderPackages(): InstalledProviderPackages;
22157
- declare function writeInstalledProviderPackages(value: InstalledProviderPackages): InstalledProviderPackages;
22158
- declare function saveInstalledProviderPackage(value: InstalledProviderPackage): InstalledProviderPackages;
22159
- declare function removeInstalledProviderPackage(id: string): InstalledProviderPackage | undefined;
22341
+ export declare function readInstalledProviderPackages(): InstalledProviderPackages;
22342
+ export declare function writeInstalledProviderPackages(value: InstalledProviderPackages): InstalledProviderPackages;
22343
+ export declare function saveInstalledProviderPackage(value: InstalledProviderPackage): InstalledProviderPackages;
22344
+ export declare function removeInstalledProviderPackage(id: string): InstalledProviderPackage | undefined;
22160
22345
  //#endregion
22161
22346
  //#region packages/core/src/providers/ahrefs/client.d.ts
22162
- type AhrefsLimitsAndUsage = {
22347
+ export type AhrefsLimitsAndUsage = {
22163
22348
  provider: 'ahrefs';
22164
22349
  apiVersion: 3;
22165
22350
  subscription: string;
@@ -22178,7 +22363,7 @@ type AhrefsLimitsAndUsage = {
22178
22363
  observedAt: string;
22179
22364
  requestCostUnits: 0;
22180
22365
  };
22181
- type AhrefsClientOptions = {
22366
+ export type AhrefsClientOptions = {
22182
22367
  apiKey?: string;
22183
22368
  credentials?: () => string | undefined | Promise<string | undefined>;
22184
22369
  fetch?: ProviderFetch;
@@ -22186,7 +22371,7 @@ type AhrefsClientOptions = {
22186
22371
  timeoutMs?: number;
22187
22372
  now?: () => Date;
22188
22373
  };
22189
- declare class AhrefsClient {
22374
+ export declare class AhrefsClient {
22190
22375
  private readonly apiKey?;
22191
22376
  private readonly credentials;
22192
22377
  private readonly fetch;
@@ -22200,8 +22385,8 @@ declare class AhrefsClient {
22200
22385
  }
22201
22386
  //#endregion
22202
22387
  //#region packages/core/src/providers/ahrefs/credentials.d.ts
22203
- declare const AHREFS_API_KEY_ENV = "SEO_AHREFS_API_KEY";
22204
- declare const AHREFS_API_KEY_SECRET: "ahrefs-api-key";
22388
+ export declare const AHREFS_API_KEY_ENV = "SEO_AHREFS_API_KEY";
22389
+ export declare const AHREFS_API_KEY_SECRET: "ahrefs-api-key";
22205
22390
  declare const store: {
22206
22391
  write(value: string): Promise<Exclude<ProviderSecretSource, "environment">>;
22207
22392
  read(options?: {
@@ -22212,45 +22397,45 @@ declare const store: {
22212
22397
  } | undefined>;
22213
22398
  remove(): Promise<void>;
22214
22399
  };
22215
- type StoredAhrefsApiKey = NonNullable<Awaited<ReturnType<typeof store.read>>>;
22216
- declare function writeAhrefsApiKey(value: string): Promise<"file" | "keychain">;
22217
- declare function readAhrefsApiKey(input?: {
22400
+ export type StoredAhrefsApiKey = NonNullable<Awaited<ReturnType<typeof store.read>>>;
22401
+ export declare function writeAhrefsApiKey(value: string): Promise<"file" | "keychain">;
22402
+ export declare function readAhrefsApiKey(input?: {
22218
22403
  env?: NodeJS.ProcessEnv;
22219
22404
  }): Promise<{
22220
22405
  apiKey: string;
22221
22406
  source: ProviderSecretSource;
22222
22407
  } | undefined>;
22223
- declare function deleteAhrefsApiKey(): Promise<void>;
22408
+ export declare function deleteAhrefsApiKey(): Promise<void>;
22224
22409
  //#endregion
22225
22410
  //#region packages/core/src/providers/bing/credentials.d.ts
22226
- declare const BING_API_KEY_ENV = "SEO_BING_API_KEY";
22227
- declare const BING_API_KEY_SECRET: "bing-api-key";
22228
- declare function writeBingApiKey(value: string): Promise<"file" | "keychain">;
22229
- declare function readBingApiKey(input?: {
22411
+ export declare const BING_API_KEY_ENV = "SEO_BING_API_KEY";
22412
+ export declare const BING_API_KEY_SECRET: "bing-api-key";
22413
+ export declare function writeBingApiKey(value: string): Promise<"file" | "keychain">;
22414
+ export declare function readBingApiKey(input?: {
22230
22415
  env?: NodeJS.ProcessEnv;
22231
22416
  }): Promise<{
22232
22417
  apiKey: string;
22233
22418
  source: ProviderSecretSource;
22234
22419
  } | undefined>;
22235
- declare function deleteBingApiKey(): Promise<void>;
22420
+ export declare function deleteBingApiKey(): Promise<void>;
22236
22421
  //#endregion
22237
22422
  //#region packages/core/src/providers/dataforseo/credentials.d.ts
22238
- declare const DATAFORSEO_LOGIN_ENV = "SEO_DATAFORSEO_LOGIN";
22239
- declare const DATAFORSEO_PASSWORD_ENV = "SEO_DATAFORSEO_PASSWORD";
22240
- declare const DATAFORSEO_CREDENTIAL_SECRET: "dataforseo-credentials";
22241
- type DataForSeoCredentials = {
22423
+ export declare const DATAFORSEO_LOGIN_ENV = "SEO_DATAFORSEO_LOGIN";
22424
+ export declare const DATAFORSEO_PASSWORD_ENV = "SEO_DATAFORSEO_PASSWORD";
22425
+ export declare const DATAFORSEO_CREDENTIAL_SECRET: "dataforseo-credentials";
22426
+ export type DataForSeoCredentials = {
22242
22427
  login: string;
22243
22428
  password: string;
22244
22429
  };
22245
- type StoredDataForSeoCredentials = DataForSeoCredentials & {
22430
+ export type StoredDataForSeoCredentials = DataForSeoCredentials & {
22246
22431
  source: ProviderSecretSource;
22247
22432
  migrated: boolean;
22248
22433
  };
22249
- declare function writeDataForSeoCredentials(credentials: DataForSeoCredentials): Promise<Exclude<ProviderSecretSource, 'environment'>>;
22250
- declare function readDataForSeoCredentials(input?: {
22434
+ export declare function writeDataForSeoCredentials(credentials: DataForSeoCredentials): Promise<Exclude<ProviderSecretSource, 'environment'>>;
22435
+ export declare function readDataForSeoCredentials(input?: {
22251
22436
  env?: NodeJS.ProcessEnv;
22252
22437
  }): Promise<StoredDataForSeoCredentials | undefined>;
22253
- declare function deleteDataForSeoCredentials(): Promise<void>;
22438
+ export declare function deleteDataForSeoCredentials(): Promise<void>;
22254
22439
  //#endregion
22255
22440
  //#region packages/core/src/providers/dataforseo/client-types.d.ts
22256
22441
  type DataForSeoAccountSnapshot = {
@@ -22274,7 +22459,7 @@ type DataForSeoClientOptions = {
22274
22459
  };
22275
22460
  //#endregion
22276
22461
  //#region packages/core/src/providers/dataforseo/client.d.ts
22277
- declare class DataForSeoClient {
22462
+ export declare class DataForSeoClient {
22278
22463
  private readonly fetch;
22279
22464
  private readonly credentials;
22280
22465
  private readonly baseUrl;
@@ -22289,8 +22474,8 @@ declare class DataForSeoClient {
22289
22474
  }
22290
22475
  //#endregion
22291
22476
  //#region packages/core/src/providers/errors.d.ts
22292
- type ProviderErrorCode = 'configuration' | 'authentication' | 'rate-limit' | 'timeout' | 'response-too-large' | 'invalid-response' | 'remote-error';
22293
- declare class ProviderError extends Error {
22477
+ export type ProviderErrorCode = 'configuration' | 'authentication' | 'rate-limit' | 'timeout' | 'response-too-large' | 'invalid-response' | 'remote-error';
22478
+ export declare class ProviderError extends Error {
22294
22479
  readonly provider: ExternalServiceId;
22295
22480
  readonly operation: string;
22296
22481
  readonly code: ProviderErrorCode;
@@ -22309,52 +22494,52 @@ declare class ProviderError extends Error {
22309
22494
  }
22310
22495
  //#endregion
22311
22496
  //#region packages/core/src/robots-directives.d.ts
22312
- type RobotsDirective = 'noindex' | 'nofollow' | 'nosnippet';
22313
- type SnippetControlEvidence = {
22497
+ export type RobotsDirective = 'noindex' | 'nofollow' | 'nosnippet';
22498
+ export type SnippetControlEvidence = {
22314
22499
  source: 'meta-robots' | 'x-robots-tag';
22315
22500
  directive: 'nosnippet' | 'max-snippet';
22316
22501
  raw: string;
22317
22502
  value?: number;
22318
22503
  };
22319
- type EffectiveSnippetControl = {
22504
+ export type EffectiveSnippetControl = {
22320
22505
  status: 'not-restricted' | 'limited' | 'blocked';
22321
22506
  reason: 'no-restrictive-directive' | 'max-snippet-limit' | 'max-snippet-zero' | 'nosnippet';
22322
22507
  maxCharacters?: number;
22323
22508
  evidence: SnippetControlEvidence[];
22324
22509
  };
22325
- declare function combineRobotsValues(value: Array<string | undefined>): string | undefined;
22326
- declare function metaRobotsDirectives(value?: string | string[]): Set<RobotsDirective>;
22327
- declare function xRobotsDirectives(value?: string | string[], userAgent?: string): Set<RobotsDirective>;
22328
- declare function hasMetaRobotsDirective(value: string | string[] | undefined, directive: RobotsDirective): boolean;
22329
- declare function hasXRobotsDirective(value: string | string[] | undefined, directive: RobotsDirective): boolean;
22330
- declare function effectiveRobotsDirectives(input: {
22510
+ export declare function combineRobotsValues(value: Array<string | undefined>): string | undefined;
22511
+ export declare function metaRobotsDirectives(value?: string | string[]): Set<RobotsDirective>;
22512
+ export declare function xRobotsDirectives(value?: string | string[], userAgent?: string): Set<RobotsDirective>;
22513
+ export declare function hasMetaRobotsDirective(value: string | string[] | undefined, directive: RobotsDirective): boolean;
22514
+ export declare function hasXRobotsDirective(value: string | string[] | undefined, directive: RobotsDirective): boolean;
22515
+ export declare function effectiveRobotsDirectives(input: {
22331
22516
  metaRobots?: string | string[];
22332
22517
  xRobotsTag?: string | string[];
22333
22518
  }): Set<RobotsDirective>;
22334
- declare function effectiveSnippetControl(input: {
22519
+ export declare function effectiveSnippetControl(input: {
22335
22520
  metaRobots?: string | string[];
22336
22521
  xRobotsTag?: string | string[];
22337
22522
  }): EffectiveSnippetControl;
22338
22523
  //#endregion
22339
22524
  //#region packages/core/src/runtime/interfaces.d.ts
22340
- interface CredentialsProvider {
22525
+ export interface CredentialsProvider {
22341
22526
  getGoogleOAuthClient(): OAuthClientConfig | undefined;
22342
22527
  readGoogleTokens(): Promise<StoredTokens | undefined>;
22343
22528
  writeGoogleTokens(tokens: StoredTokens): Promise<void>;
22344
22529
  deleteGoogleTokens(): Promise<void>;
22345
22530
  }
22346
- interface StorageAdapter {
22531
+ export interface StorageAdapter {
22347
22532
  get<T = unknown>(key: string): Promise<T | undefined>;
22348
22533
  put<T = unknown>(key: string, value: T): Promise<void>;
22349
22534
  delete(key: string): Promise<void>;
22350
22535
  }
22351
- declare class LocalCredentialsProvider implements CredentialsProvider {
22536
+ export declare class LocalCredentialsProvider implements CredentialsProvider {
22352
22537
  getGoogleOAuthClient(): OAuthClientConfig | undefined;
22353
22538
  readGoogleTokens(): Promise<StoredTokens | undefined>;
22354
22539
  writeGoogleTokens(tokens: StoredTokens): Promise<void>;
22355
22540
  deleteGoogleTokens(): Promise<void>;
22356
22541
  }
22357
- declare class JsonFileStorageAdapter implements StorageAdapter {
22542
+ export declare class JsonFileStorageAdapter implements StorageAdapter {
22358
22543
  private readonly filePath;
22359
22544
  constructor(filePath: string);
22360
22545
  get<T = unknown>(key: string): Promise<T | undefined>;
@@ -22363,10 +22548,10 @@ declare class JsonFileStorageAdapter implements StorageAdapter {
22363
22548
  private readAll;
22364
22549
  private writeAll;
22365
22550
  }
22366
- declare const localCredentialsProvider: LocalCredentialsProvider;
22551
+ export declare const localCredentialsProvider: LocalCredentialsProvider;
22367
22552
  //#endregion
22368
22553
  //#region packages/core/src/storage/ledger.d.ts
22369
- declare class SessionLedger {
22554
+ export declare class SessionLedger {
22370
22555
  private readonly entries;
22371
22556
  private gscCalls;
22372
22557
  private gscRows;
@@ -22376,15 +22561,15 @@ declare class SessionLedger {
22376
22561
  }
22377
22562
  //#endregion
22378
22563
  //#region packages/core/src/storage/log-retention.d.ts
22379
- declare const LOG_MAX_FILE_BYTES: number;
22380
- declare const LOG_MAX_TOTAL_BYTES: number;
22381
- declare const LOG_MAX_AGE_MS: number;
22382
- type LogPruneResult = {
22564
+ export declare const LOG_MAX_FILE_BYTES: number;
22565
+ export declare const LOG_MAX_TOTAL_BYTES: number;
22566
+ export declare const LOG_MAX_AGE_MS: number;
22567
+ export type LogPruneResult = {
22383
22568
  rotated: number;
22384
22569
  removed: number;
22385
22570
  sizeBytes: number;
22386
22571
  };
22387
- declare function pruneLogs(options?: {
22572
+ export declare function pruneLogs(options?: {
22388
22573
  directory?: string;
22389
22574
  now?: number;
22390
22575
  maxFileBytes?: number;
@@ -22393,13 +22578,13 @@ declare function pruneLogs(options?: {
22393
22578
  }): LogPruneResult;
22394
22579
  //#endregion
22395
22580
  //#region packages/core/src/storage/reset.d.ts
22396
- declare function resetSeoData(): Promise<void>;
22581
+ export declare function resetSeoData(): Promise<void>;
22397
22582
  //#endregion
22398
22583
  //#region packages/core/src/telemetry-failures.d.ts
22399
- declare const TELEMETRY_ERROR_CATEGORIES: readonly ["auth", "crawl_timeout", "network", "config", "data", "database", "filesystem", "internal", "unknown"];
22400
- declare const TELEMETRY_FAILURE_REASONS: readonly ["access_denied", "auth_config_required", "auth_expired", "auth_required", "crawl_timeout", "database_constraint", "database_corrupt", "database_locked", "database_read_only", "database_unique_constraint", "filesystem_full", "filesystem_not_found", "filesystem_permission", "insufficient_data", "internal_error", "invalid_input", "network_connection", "network_dns", "network_timeout", "network_tls", "optional_provider_unavailable", "property_not_found", "provider_unavailable", "rate_limited", "unknown"];
22401
- declare const TELEMETRY_FAILURE_CONTEXTS: readonly ["crawl_pages_run_id_url"];
22402
- declare const TELEMETRY_OPERATIONS: readonly ["analytics", "auth", "cache", "change-log", "client", "content", "content-groups", "crawl-reports", "diagnose", "export", "gsc-query", "indexnow", "init", "llms", "logs", "mcp", "monitoring", "okf", "perf", "privacy", "project", "projects", "providers", "pseo", "reports", "reset", "schedule", "server-logs", "setup", "skill", "sites", "start", "telemetry", "tests", "updates", "url-inspect"];
22584
+ export declare const TELEMETRY_ERROR_CATEGORIES: readonly ["auth", "crawl_timeout", "network", "config", "data", "database", "filesystem", "internal", "unknown"];
22585
+ export declare const TELEMETRY_FAILURE_REASONS: readonly ["access_denied", "auth_config_required", "auth_expired", "auth_required", "crawl_timeout", "database_constraint", "database_corrupt", "database_locked", "database_read_only", "database_unique_constraint", "filesystem_full", "filesystem_not_found", "filesystem_permission", "insufficient_data", "internal_error", "invalid_input", "network_connection", "network_dns", "network_timeout", "network_tls", "optional_provider_unavailable", "property_not_found", "provider_unavailable", "rate_limited", "unknown"];
22586
+ export declare const TELEMETRY_FAILURE_CONTEXTS: readonly ["crawl_pages_run_id_url"];
22587
+ export declare const TELEMETRY_OPERATIONS: readonly ["analytics", "auth", "cache", "change-log", "client", "content", "content-groups", "crawl-reports", "diagnose", "export", "gsc-query", "indexnow", "init", "llms", "logs", "mcp", "monitoring", "okf", "perf", "privacy", "project", "projects", "providers", "pseo", "reports", "reset", "schedule", "server-logs", "setup", "skill", "sites", "start", "telemetry", "tests", "updates", "url-inspect"];
22403
22588
  type TelemetryErrorCategory = (typeof TELEMETRY_ERROR_CATEGORIES)[number];
22404
22589
  type TelemetryFailureReason = (typeof TELEMETRY_FAILURE_REASONS)[number];
22405
22590
  type TelemetryFailureContext = (typeof TELEMETRY_FAILURE_CONTEXTS)[number];
@@ -22409,29 +22594,29 @@ type TelemetryFailureClassification = {
22409
22594
  failureReason: TelemetryFailureReason;
22410
22595
  failureContext?: TelemetryFailureContext;
22411
22596
  };
22412
- declare function classifyTelemetryFailure(error: unknown): TelemetryFailureClassification;
22413
- declare function isTelemetryOperation(value: unknown): value is TelemetryOperation;
22597
+ export declare function classifyTelemetryFailure(error: unknown): TelemetryFailureClassification;
22598
+ export declare function isTelemetryOperation(value: unknown): value is TelemetryOperation;
22414
22599
  //#endregion
22415
22600
  //#region packages/core/src/telemetry-shared.d.ts
22416
- declare const TELEMETRY_ENDPOINT = "https://seoskill.dev/api/t";
22417
- declare const TELEMETRY_SCHEMA_VERSION = 2;
22418
- declare function isoWeek(date: Date): string;
22601
+ export declare const TELEMETRY_ENDPOINT = "https://seoskill.dev/api/t";
22602
+ export declare const TELEMETRY_SCHEMA_VERSION = 2;
22603
+ export declare function isoWeek(date: Date): string;
22419
22604
  //#endregion
22420
22605
  //#region packages/core/src/telemetry.d.ts
22421
- declare const TELEMETRY_TIMEOUT_MS = 2000;
22422
- declare const TELEMETRY_EVENTS: readonly ["first_run", "setup_complete", "audit_start", "audit_complete", "audit_failed", "command_failed", "first_audit_complete", "active_d1", "active_d7", "active_d30"];
22423
- declare const TELEMETRY_AGENTS: readonly ["claude-code", "cursor", "codex", "cli", "unknown"];
22424
- declare const TELEMETRY_REPORTS: readonly ["affected-urls", "ai-referrals", "audit-page", "audit-urls", "cannibalisation", "compare-crawls", "content-optimization", "crawl-diff", "site-crawl", "ctr-underperformers", "decaying-pages", "setup-check", "explain-crawl-issue", "crawl-report", "index-coverage", "index-coverage-plan", "index-monitor", "index-watch", "internal-links", "keyword-metrics", "link-evidence", "link-recovery", "crawl-history", "crawler-rules", "measure-change", "page-opportunities", "performance-audit", "query-clusters", "quick-wins", "ranked-keywords", "redirect-trace", "second-page", "segment-impact", "serp-results", "serp-competitors", "striking-distance", "top-fixes", "traffic-anomaly", "update-correlation", "search-performance-overview", "refresh-priorities", "technical-watch", "update-postmortem"];
22425
- type TelemetryEvent = (typeof TELEMETRY_EVENTS)[number];
22426
- type TelemetryAgent = (typeof TELEMETRY_AGENTS)[number];
22427
- type TelemetryReport = (typeof TELEMETRY_REPORTS)[number];
22428
- type TelemetryState = {
22606
+ export declare const TELEMETRY_TIMEOUT_MS = 2000;
22607
+ export declare const TELEMETRY_EVENTS: readonly ["first_run", "setup_complete", "audit_start", "audit_complete", "audit_failed", "command_failed", "first_audit_complete", "active_d1", "active_d7", "active_d30"];
22608
+ export declare const TELEMETRY_AGENTS: readonly ["claude-code", "cursor", "codex", "cli", "unknown"];
22609
+ export declare const TELEMETRY_REPORTS: readonly ["affected-urls", "ai-referrals", "audit-page", "audit-urls", "cannibalisation", "compare-crawls", "content-optimization", "crawl-diff", "site-crawl", "ctr-underperformers", "decaying-pages", "setup-check", "explain-crawl-issue", "crawl-report", "index-coverage", "index-coverage-plan", "index-monitor", "index-watch", "internal-links", "keyword-metrics", "link-evidence", "link-recovery", "crawl-history", "crawler-rules", "measure-change", "page-opportunities", "performance-audit", "query-clusters", "quick-wins", "ranked-keywords", "redirect-trace", "second-page", "segment-impact", "serp-results", "serp-competitors", "striking-distance", "top-fixes", "traffic-anomaly", "update-correlation", "search-performance-overview", "refresh-priorities", "technical-watch", "update-postmortem"];
22610
+ export type TelemetryEvent = (typeof TELEMETRY_EVENTS)[number];
22611
+ export type TelemetryAgent = (typeof TELEMETRY_AGENTS)[number];
22612
+ export type TelemetryReport = (typeof TELEMETRY_REPORTS)[number];
22613
+ export type TelemetryState = {
22429
22614
  telemetryEnabled: boolean;
22430
22615
  firstRunAt: string;
22431
22616
  cohort: string;
22432
22617
  sentMilestones: TelemetryMilestone[];
22433
22618
  };
22434
- type TelemetryPayload = {
22619
+ export type TelemetryPayload = {
22435
22620
  event: TelemetryEvent;
22436
22621
  version: string;
22437
22622
  agent: TelemetryAgent;
@@ -22448,7 +22633,7 @@ type TelemetryPayload = {
22448
22633
  };
22449
22634
  type TelemetryMilestone = 'first_run' | 'setup_complete' | 'first_audit_complete' | 'active_d1' | 'active_d7' | 'active_d30';
22450
22635
  type TelemetryFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
22451
- type TelemetryOptions = {
22636
+ export type TelemetryOptions = {
22452
22637
  agent?: TelemetryAgent;
22453
22638
  clientName?: string;
22454
22639
  endpoint?: string;
@@ -22462,39 +22647,39 @@ type TelemetryOptions = {
22462
22647
  stateFile?: string;
22463
22648
  version?: string;
22464
22649
  };
22465
- type TelemetryDisableReason = 'ci' | 'do_not_track' | 'environment' | 'local_setting' | 'invalid_state';
22466
- type TelemetryStatus = {
22650
+ export type TelemetryDisableReason = 'ci' | 'do_not_track' | 'environment' | 'local_setting' | 'invalid_state';
22651
+ export type TelemetryStatus = {
22467
22652
  enabled: boolean;
22468
22653
  reason?: TelemetryDisableReason;
22469
22654
  stateFile: string;
22470
22655
  state?: TelemetryState;
22471
22656
  };
22472
- declare const TELEMETRY_NOTICE = "SEO Skill collects anonymous usage data to improve the tool (event name,\nfixed report or command name, fixed failure classification, version, agent,\nOS, architecture, Node major, and install week; never URLs, report data, error\nmessages, command arguments, or identifiers of any kind).\nDocs: https://seoskill.dev/telemetry\nDisable: seo telemetry disable (or set DO_NOT_TRACK=1)\n";
22473
- declare function isTelemetryCi(env?: NodeJS.ProcessEnv): boolean;
22474
- declare function isTelemetryReport(value: unknown): value is TelemetryReport;
22475
- declare function detectTelemetryAgent(input?: {
22657
+ export declare const TELEMETRY_NOTICE = "SEO Skill collects anonymous usage data to improve the tool (event name,\nfixed report or command name, fixed failure classification, version, agent,\nOS, architecture, Node major, and install week; never URLs, report data, error\nmessages, command arguments, or identifiers of any kind).\nDocs: https://seoskill.dev/telemetry\nDisable: seo telemetry disable (or set DO_NOT_TRACK=1)\n";
22658
+ export declare function isTelemetryCi(env?: NodeJS.ProcessEnv): boolean;
22659
+ export declare function isTelemetryReport(value: unknown): value is TelemetryReport;
22660
+ export declare function detectTelemetryAgent(input?: {
22476
22661
  clientName?: string;
22477
22662
  env?: NodeJS.ProcessEnv;
22478
22663
  }): TelemetryAgent;
22479
- declare function buildTelemetryPayload(event: TelemetryEvent, state: TelemetryState, fields?: {
22664
+ export declare function buildTelemetryPayload(event: TelemetryEvent, state: TelemetryState, fields?: {
22480
22665
  errorCategory?: TelemetryErrorCategory;
22481
22666
  failureReason?: TelemetryFailureReason;
22482
22667
  failureContext?: TelemetryFailureContext;
22483
22668
  operation?: TelemetryOperation;
22484
22669
  report?: TelemetryReport;
22485
22670
  }, options?: TelemetryOptions): TelemetryPayload;
22486
- declare function getTelemetryStatus(options?: TelemetryOptions): TelemetryStatus;
22487
- declare function setTelemetryEnabled(enabled: boolean, options?: TelemetryOptions): TelemetryStatus;
22488
- declare function initializeTelemetry(options?: TelemetryOptions): TelemetryStatus;
22489
- declare function trackTelemetryReportStart(report: string, options?: TelemetryOptions): void;
22490
- declare function trackTelemetryReportComplete(report: string, options?: TelemetryOptions): void;
22491
- declare function trackTelemetryReportFailed(report: string, error: unknown, options?: TelemetryOptions): void;
22492
- declare function trackTelemetryCommandFailed(operation: string, error: unknown, options?: TelemetryOptions): void;
22493
- declare function trackTelemetrySetupComplete(options?: TelemetryOptions): void;
22494
- declare function telemetryErrorCategory(error: unknown): TelemetryErrorCategory;
22671
+ export declare function getTelemetryStatus(options?: TelemetryOptions): TelemetryStatus;
22672
+ export declare function setTelemetryEnabled(enabled: boolean, options?: TelemetryOptions): TelemetryStatus;
22673
+ export declare function initializeTelemetry(options?: TelemetryOptions): TelemetryStatus;
22674
+ export declare function trackTelemetryReportStart(report: string, options?: TelemetryOptions): void;
22675
+ export declare function trackTelemetryReportComplete(report: string, options?: TelemetryOptions): void;
22676
+ export declare function trackTelemetryReportFailed(report: string, error: unknown, options?: TelemetryOptions): void;
22677
+ export declare function trackTelemetryCommandFailed(operation: string, error: unknown, options?: TelemetryOptions): void;
22678
+ export declare function trackTelemetrySetupComplete(options?: TelemetryOptions): void;
22679
+ export declare function telemetryErrorCategory(error: unknown): TelemetryErrorCategory;
22495
22680
  //#endregion
22496
22681
  //#region packages/core/src/update-notice.d.ts
22497
- type UpdateNoticeOptions = {
22682
+ export type UpdateNoticeOptions = {
22498
22683
  argv?: string[];
22499
22684
  cacheFile?: string;
22500
22685
  cliPath?: string;
@@ -22502,24 +22687,24 @@ type UpdateNoticeOptions = {
22502
22687
  now?: Date;
22503
22688
  version?: string;
22504
22689
  };
22505
- declare function isNewerVersion(current: string, latest: string): boolean;
22506
- declare function updateNotice(options?: UpdateNoticeOptions): string | undefined;
22690
+ export declare function isNewerVersion(current: string, latest: string): boolean;
22691
+ export declare function updateNotice(options?: UpdateNoticeOptions): string | undefined;
22507
22692
  //#endregion
22508
22693
  //#region packages/core/src/updates/search-status.d.ts
22509
- declare const INCIDENTS_URL = "https://status.search.google.com/incidents.json";
22510
- declare function fetchSearchStatusIncidents(): Promise<SearchStatusIncident[]>;
22511
- declare function listSearchUpdates(input?: {
22694
+ export declare const INCIDENTS_URL = "https://status.search.google.com/incidents.json";
22695
+ export declare function fetchSearchStatusIncidents(): Promise<SearchStatusIncident[]>;
22696
+ export declare function listSearchUpdates(input?: {
22512
22697
  product?: string;
22513
22698
  limit?: number;
22514
22699
  }): Promise<SearchUpdate[]>;
22515
22700
  //#endregion
22516
22701
  //#region packages/core/src/utils/time.d.ts
22517
- declare function parseOlderThan(input?: string): number | undefined;
22518
- declare function formatRelativeExpiry(expiresAt: number): string;
22519
- declare function isoDate(daysAgo?: number): string;
22702
+ export declare function parseOlderThan(input?: string): number | undefined;
22703
+ export declare function formatRelativeExpiry(expiresAt: number): string;
22704
+ export declare function isoDate(daysAgo?: number): string;
22520
22705
  //#endregion
22521
22706
  //#region packages/core/src/version.d.ts
22522
- declare const SEO_VERSION: string;
22707
+ export declare const SEO_VERSION: string;
22523
22708
  //#endregion
22524
- export { AHREFS_API_KEY_ENV, AHREFS_API_KEY_SECRET, AI_REFERRAL_SOURCES, AI_REFERRAL_SOURCES_VERSION, ANALYTICS_PROVIDER_IDS, AUDIT_PAGE_RULE_IDS, AccessBlockEvidence, AgentFinding, AgentFindingStatus, AgentFindings, AgentFixFinding, AgentReportInventory, AgentReportOptions, AgentReviewFinding, AhrefsClient, AhrefsClientOptions, AhrefsLimitsAndUsage, type AiReferralDataSource, type AiReferralMetrics, type AiReferralQueryEvidence, type AiReferralReport, type AiReferralSourceDefinition, AnalyticsConnection, AnalyticsProvider, AnalyticsProviderDetails, AnalyticsProviderRuntimeOptions, type AnalyzeCannibalImportRowsInput, type AnalyzeCannibalRowsInput, type AnalyzeDecayInput, type AnalyzeQuickWinsInput, type AnalyzeSecondPageInput, type AnalyzeStrikingDistanceInput, AppConfig, AuditPageDependencies, AuditPageReport, AuthorizedGoogleClient, BING_API_KEY_ENV, BING_API_KEY_SECRET, BROWSER_USER_AGENT, BoundedSitemapInventory, BrandTermCandidate, CANNIBAL_MAXIMUM_DOMINANT_SHARE, CANNIBAL_MINIMUM_PAGE_SHARE, CLICKY_SITEKEY_ENV, CLICKY_SITE_KEYS_SECRET, CLOUD_SIGN_IN, CLOUD_URL, CRAWL_SKIP_REASONS, CTR_DEFAULT_LIMIT, CTR_MAX_LIMIT, CTR_MAX_MIN_IMPRESSIONS, CacheStats, type CannibalAnalysis, CannibalDependencies, type CannibalImportAnalysis, CannibalImportDependencies, type CannibalImportItem, type CannibalImportPage, type CannibalImportReport, CannibalImportReportInput, type CannibalImportSelection, type CannibalItem, type CannibalPage, type CannibalReport, CannibalReportInput, CannibalSearchConsoleInput, type CannibalSelection, type CannibalSuppression, type CannibalSuppressionReason, CloudCredentials, ContentExtractionDiagnostics, ContentExtractor, ContentOptimizationIntent, ContentOptimizationReport, CoverageField, CrawlAccessSummary, type CrawlAiAvailability, type CrawlAiBotAccess, type CrawlAiLinkCheck, type CrawlAiResourceSignal, type CrawlAiSignals, CrawlAnalyticsDataSource, CrawlConfig, CrawlConfigInput, CrawlDataSourceStatus, CrawlDataSourceWindow, CrawlExternalLinkVerification, CrawlFetchRateConfig, CrawlImplementationQueueInput, CrawlImplementationQueueItem, CrawlImplementationQueueOutput, CrawlIssue, CrawlIssueGroup, CrawlLinkGraph, CrawlMode, CrawlOneResult, CrawlOutputFormat, CrawlPageSnapshot, CrawlReport, CrawlReportDataSources, CrawlReportSummary, CrawlRequestObservation, CrawlResponseObservation, CrawlRunStats, CrawlSearchDataSource, type CrawlSiteChecks, type CrawlSiteDependencies, CrawlSitemapDiscovery, CrawlSkipImpact, CrawlSkipReason, CrawlSkipReasonCount, CrawlSkippedUrlsByImpact, CrawlStatusEvent, CrawlStatusHandler, type CrawlStatusPhase, CrawlStrategy, CrawlerIdentity, CredentialsProvider, CreditUsage, CsvFile, CsvRow, CsvValue, type CtrUnderperformer, CtrUnderperformerDependencies, type CtrUnderperformerSelection, CtrUnderperformersInput, CtrUnderperformersReport, DATAFORSEO_CREDENTIAL_SECRET, DATAFORSEO_LOGIN_ENV, DATAFORSEO_PASSWORD_ENV, DEFAULT_MAX_PAGES, DEFAULT_SEARCH_CONSOLE_EXPORT_ROW_LIMIT, DEFAULT_UNREACHED_PAGE_LIMIT, type DataForSeoAccountSnapshot, DataForSeoClient, type DataForSeoClientOptions, DataForSeoCredentials, type DecayAnalysis, type DecayComparison, type DecayDiagnosis, type DecayGroup, type DecayItem, type DecayMetrics, type DecayReport, type DecaySelection, type DecaySignal, DecayingDependencies, DecayingReportInput, DecisionAnswer, DecisionErrorKind, DecisionModel, DecisionModelError, DecisionQuestion, DecisionRequest, DecisionResponse, DecisionRunner, DecisionUsage, DiagnosePropertyDependencies, DiagnosePropertyReport, DiagnosisDataStatus, DiagnosisPriority, DoctorCheck, EffectiveSnippetControl, ExternalLinkCheck, ExternalLinkCheckAttempt, ExternalLinkCheckState, ExternalServiceId, ExtractedLinkLocation, ExtractedPage, FetchPageDependencies, type FetchPageOptions, type FetchRateControls, GSC_FINAL_DATA_LAG_DAYS, GSC_TIME_ZONE, type Ga4AccountSummary, Ga4DataStream, type Ga4PropertySummary, Ga4ReportRequest, Ga4RunReportResult, Ga4WebStreamCandidate, Ga4WebStreamMatch, type GoogleAccessTokenClient, GoogleApiError, GoogleCallOptions, GoogleFetch, GoogleRichResultAssessment, GoogleRichResultAssessmentSelection, GoogleRichResultAssessmentStatus, GscRow, HttpProfile, INCIDENTS_URL, IndexCoverageBoundedSection, IndexCoverageCandidateItem, IndexCoverageControlReason, IndexCoverageControlledItem, IndexCoverageCrawlInput, IndexCoverageInput, IndexCoverageInventoryItem, IndexCoverageReport, IndexCoverageReportDependencies, IndexCoverageReportInput, IndexCoverageSearchConsoleInput, IndexCoverageSearchVisibilityItem, IndexCoverageSignalsReport, IndexCoverageSitemapInput, IndexCoverageSourceCompleteness, IndexCoverageSourceEvidence, IndexCoverageSourceMembership, IndexCoverageTemplateReview, InstalledProviderPackage, InstalledProviderPackages, type InternalLinkSuggestion, InternalLinksDependencies, InternalLinksInput, type InternalLinksPage, type InternalLinksReport, type JavaScriptRenderingInput, type JavaScriptRenderingMode, JsonFileStorageAdapter, KeywordMetric, KeywordMonthlySearch, LINK_ROLES, LOCAL_BING_CONNECT, LOCAL_SIGN_IN, LOG_MAX_AGE_MS, LOG_MAX_FILE_BYTES, LOG_MAX_TOTAL_BYTES, LighthouseFailureCode, LinkRecoverItem, LinkRecoverReport, LoadedProviderExtensions, LocalCredentialsProvider, LogPruneResult, MANAGED_PROVIDER_SECRET_NAMES, MAX_CRAWL_CONCURRENCY, MAX_CRAWL_DEPTH, MAX_CRAWL_PAGES, MAX_CRAWL_TIMEOUT_MS, MAX_MAX_PAGES, MAX_SEARCH_CONSOLE_EXPORT_FILES, MAX_SEARCH_CONSOLE_EXPORT_ROW_LIMIT, NarrativeSection, type OAuthClientConfig, OpportunityBenchmarkRow, PAGE_TYPES, PROVIDER_SECRET_NAMES, PageExtractor, PageFetchDiagnostics, PageFetchResult, PageFetcher, type PageOpportunityAnalysis, type PageOpportunityAnalysisInput, type PageOpportunityBenchmark, PageOpportunityInput, type PageOpportunityItem, PageOpportunityReport, type PageOpportunitySelection, type PageOpportunityType, type PageOpportunityVerification, type PageRenderer, PageSearchMetrics, PageTopQuery, PartialDiagnosisReason, PerformanceAuditReport, PerformanceFieldData, PerformanceFieldMetric, PerformanceMetric, PerformanceRating, PositionBenchmark, Presentation, PresentationChart, PresentationScalar, PresentationTable, PresentationTableColumn, PriorityQueueItem, ProgressReporter, ProviderActionResult, ProviderCapability, ProviderError, ProviderErrorCode, ProviderExtensionLoadFailure, ProviderExtensionLoaderOptions, ProviderExtensionRegistry, ProviderFetch, ProviderId, ProviderImportEvidence, ProviderInstallerOptions, ProviderPackageCommand, ProviderPackageCommandResult, ProviderPackageManifest, ProviderPackageRelease, ProviderRequestInput, ProviderRuntimeOptions, ProviderSecret, ProviderSecretSource, ProviderValue, ProviderWarning, QueryCluster, type QueryClusterPage, QueryClusterReport, type QueryClusterRow, QueryClusterSourceRow, QueryContentClassification, QueryContentCoverage, QueryContentSignal, QueryContentVerifier, QueryFieldCoverage, type QuickWinAnalysis, type QuickWinGroup, type QuickWinItem, type QuickWinSelection, type QuickWinTemplateRecommendation, QuickWinsDependencies, QuickWinsInput, QuickWinsReport, RESEARCH_IMPORT_COLUMN_KEYS, Recommendation, RedirectTraceIssue, RedirectTraceReport, RedirectTraceStep, RegisteredProviderExtension, RenderingDocumentDifference, RenderingDocumentField, RenderingDocumentSnapshot, ReportNarrative, ResearchImportColumn, ResearchImportColumns, ResponseSizeLimitError, RobotsDirective, RuleCategory, RuleId, RuleInfo, RuleRecommendation, RuleSeverity, SEARCH_INTENTS, SEO_CRAWLER_IDENTITY, SEO_CRAWLER_TOKEN, SEO_CRAWLER_USER_AGENT, SEO_PROVIDER_API_VERSION, SEO_VERSION, SERP_TITLE_REFERENCE_WIDTH_PX, SERP_TITLE_WIDTH_PROFILE, STEP_CHANGE_RULES, SearchAnalyticsOptions, SearchAnalyticsQuery, SearchAnalyticsRequest, SearchAnalyticsResult, SearchConsoleExportEvidence, SearchConsoleExportFileImport, SearchConsoleExportPageRow, SearchConsoleExportQueryRow, SearchConsoleExportReconciliation, SearchConsoleSite, SearchDateWindow, SearchPageBatch, type SearchStatusIncident, type SearchUpdate, type SecondPageAnalysis, SecondPageDependencies, SecondPageInput, type SecondPageItem, type SecondPageQuery, type SecondPageRecommendation, type SecondPageReport, type SecondPageSelection, type SegmentDimension, SegmentImpactDependencies, SegmentImpactInput, type SegmentImpactItem, type SegmentImpactReport, type SegmentImpactSelection, type SegmentPeriodEvidence, type SegmentRange, SeoAnalyticsConnection, SeoAnalyticsLandingPageResult, SeoCliPathOptions, SeoCliPaths, SeoError, SeoErrorCode, SeoLandingPageVisitRow, SeoLandingPageVisitsCapability, SeoLandingPageVisitsResult, SeoProviderActionAdapter, SeoProviderActivate, SeoProviderApiVersion, SeoProviderCapabilityAdapter, SeoProviderCapabilityId, SeoProviderConnection, SeoProviderConnectionAdapter, SeoProviderConnectionField, SeoProviderHost, SeoProviderJson, SeoProviderJsonSchema, SeoProviderKind, SeoProviderRegistration, SeoProviderRequest, SeoProviderRuntime, SeoSearchMarket, SeoSerpLocalPackResult, SeoSerpOrganicResult, SeoSerpSnapshotCapability, SeoSerpSnapshotResult, ServiceAccountAccessTokenClient, ServiceAccountConfig, ServiceAccountStatus, SessionLedger, SitemapDocument, SitemapFetchResult, SitemapInvalidLoc, SitemapLastmodObservation, SkippedDiagnosisSection, SnippetControlEvidence, StorageAdapter, StoredAhrefsApiKey, StoredClickySiteKey, StoredDataForSeoCredentials, StoredTokenStore, StoredTokens, type StrikingDistanceAnalysis, type StrikingDistanceAnalysisGroup, type StrikingDistanceAnalysisItem, StrikingDistanceDependencies, StrikingDistanceInput, StrikingDistanceItem, StrikingDistanceReport, TELEMETRY_AGENTS, TELEMETRY_ENDPOINT, TELEMETRY_ERROR_CATEGORIES, TELEMETRY_EVENTS, TELEMETRY_FAILURE_CONTEXTS, TELEMETRY_FAILURE_REASONS, TELEMETRY_NOTICE, TELEMETRY_OPERATIONS, TELEMETRY_REPORTS, TELEMETRY_SCHEMA_VERSION, TELEMETRY_TIMEOUT_MS, TYPESAFE_API_KEY_ENV, TelemetryAgent, TelemetryDisableReason, type TelemetryErrorCategory, TelemetryEvent, type TelemetryFailureClassification, type TelemetryFailureContext, type TelemetryFailureReason, type TelemetryOperation, TelemetryOptions, TelemetryPayload, TelemetryReport, TelemetryState, TelemetryStatus, TemplateAwareReport, TitleWidthEstimate, TokenStorageMode, TokenStorageStatus, TopFix, TopFixFilters, TrafficAnomaly, TrafficAnomalyCoverage, TrafficAnomalyDependencies, TrafficAnomalyDetection, TrafficAnomalyInput, TrafficAnomalyReport, TrafficAnomalySelection, type UnmatchedSegment, UpdateConfounder, UpdateCorrelationReport, UpdateNoticeOptions, UrlInspectionRequest, UrlInspectionResult, VerifyQueryContentInput, WorkflowAction, WorkflowReport, WorkflowStep, agentActionsView, aiReferralSourceForValue, aiReferralsReport, analyticsConnectionLabel, analyticsConnectionProviderId, analyticsConnectionSchema, analyticsProviderDetails, analyticsProviderSchema, analyzeAiReferralRows, analyzeCannibalImportRows, analyzeCannibalRows, analyzeCtrUnderperformersFromRows, analyzeDecay, analyzeIndexCoverageSignals, analyzePageOpportunitiesFromRows, analyzeQueryClustersFromRows, analyzeQuickWinsFromRows, analyzeSecondPageRows, analyzeSegmentRows, analyzeStrikingDistanceRows, analyzeTrafficAnomalyRows, assertCrawlConfigLimits, assertUrlMatchesGscProperty, auditCrawlPages, auditCrawlRequests, auditPage, authStatus, bearerFetch, boundedSitemapInventory, buildAgentFindings, buildQueryClusterReportFromRows, buildTelemetryPayload, cacheDb, cannibalImportReport, cannibalReport, cannibalReportWith, changeWindow, checkDatabaseReadiness, classifyTelemetryFailure, clearCache, cloudAccountFor, cloudBing, cloudCredentials, cloudGoogleEmails, cloudGoogleToken, cloudKeys, cloudLinked, cloudLogout, clusterQueryRows, combineRobotsValues, compareSegmentRows, configSchema, contentCoverageRecommendation, contentCoverageType, contentOptimizationFromPageOpportunities, contentOptimizationReport, countLabel, crawlConfigHash, crawlConfigSchema, crawlDefinitionId, crawlFixToQueueItem, crawlImplementationQueueWorkflow, crawlIssueGroupSchema, crawlIssueSchema, crawlOne, crawlPageSnapshotSchema, crawlReportSchema, crawlReportSummarySchema, crawlRequestObservationSchema, crawlRunId, crawlSite, crawlSkipImpact, crawlSkipReasonCountsFromRecord, crawlStatusOnly, crawlTopFixSchema, crawlerJsonSchemas, crawlerRuleCategorySchema, crawlerRuleIdSchema, crawlerRuleInfoSchema, crawlerRuleRecommendationSchema, crawlerRuleSeveritySchema, crawlerSchemas, createAuthorizedClient, createCrawlReport, createCtrBenchmarkContext, createGoogleAccessTokenClient, createLogger, createPageRenderer, ctrUnderperformersReport, ctrUnderperformersReportWith, decayClusterDrafts, decayComparisonRange, decayingReport, decayingReportWith, deleteAhrefsApiKey, deleteBingApiKey, deleteClickySiteKey, deleteDataForSeoCredentials, deleteManagedProviderSecrets, deleteProviderExtensionAccount, deleteProviderExtensionCredentials, deleteProviderSecret, deleteTokens, deriveBrandTerms, describeInstalledProviderExtension, detectBrandTerms, detectTelemetryAgent, diagnoseCsvFiles, diagnoseProperty, diagnosePropertyWorkflow, effectiveRobotsDirectives, effectiveSnippetControl, ensurePrivateDatabaseFiles, ensureSeoCliDirs, estimateSerpTitleWidth, expectedCtrForPosition, explainRule, fetchCruxFieldData, fetchPage, fetchPageStatus, fetchSearchStatusIncidents, fetchSitemapUrls, fileSize, finalGscDateRange, findOverlappingSearchUpdates, finishCloudLogin, formatRelativeExpiry, ga4MatchReason, ga4PropertyIdFromName, ga4ReportQualityWarnings, ga4RequestCanUseCache, ga4RowsToObjects, getAuthModeStatus, getCacheStats, getClientConfig, getDb, getPrivacySnapshot, getSeoCliPaths, getServiceAccountConfig, getServiceAccountStatus, getTelemetryStatus, getTokenStorageStatus, googleJson, groupCrawlIssues, hasMetaRobotsDirective, hasRule, hasXRobotsDirective, hashKey, indexCoverageSignals, inferTemplateMovement, initializeTelemetry, inspectProviderPackage, inspectSearchConsoleUrl, inspectUrl, installProviderPackage, installedProviderPackageSchema, installedProviderPackagesSchema, internalLinksReport, interpretUpdateCorrelation, isBrandQuery, isNewerVersion, isSkippableReportError, isTelemetryCi, isTelemetryOperation, isTelemetryReport, isoDate, isoWeek, latestFinalGscDate, linkRecover, linkRecoverRecommendation, listAnalyticsAccounts, listAnalyticsDataStreams, listGa4AccountSummaries, listGa4DataStreams, listGoogleAccounts, listInstalledProviderExtensions, listRules, listSearchConsoleSites, listSearchUpdates, listSites, loadInstalledProviderExtensions, loadProviderExtensions, loadProviderPackage, loadSearchConsoleExport, localAccounts, localBing, localCredentialsProvider, localError, localGoogleFetch, localInternalLinksDependencies, localRefreshClicky, localResearchKeys, loginWithLoopback, makeRunId, matchGa4WebStreams, measureCoverage, metaRobotsDirectives, migrateLegacyMacConfig, missingOAuthClientMessage, missingSharedClientLoginMessage, nodeCommandDeps, normalizeBrandText, normalizeClickySiteId, normalizeClickySiteKey, normalizeCrawlConfig, normalizeCrawlSkipReasonCounts, normalizeForCoverage, normalizeHttpUrl, normalizeJavaScriptRenderingMode, normalizeLoadedCrawlReport, normalizeProviderExtensionAccount, normalizedResearchColumnName, notSignedIn, noteCacheWrite, openCloudLink, pageEvidenceRecommendation, pageOpportunitiesReport, parseOlderThan, pendingCloudLogin, performanceAudit, performanceReportIsCacheable, plural, providerCapabilitySchema, providerConnectionFieldSchema, providerExactVersionSchema, providerExtensionIdSchema, providerIdSchema, providerIntegritySchema, providerKindSchema, providerPackageManifestSchema, providerPackageNameSchema, providerPreferenceSchema, providerRegistrationSchema, providerRequestJson, providerRequestText, pruneLogs, publicHttpFetch, queryClusterReport, queryClusterTokens, queryContentCoverageFromPage, queryContentFieldsFromPage, queryFieldCoverage, queryOpportunityRecommendation, queryPageMetrics, queryPageTopQuery, queryPagesMetrics, queryPagesMetricsBatch, queryPagesTopQueries, queryPagesTopQueriesBatch, querySearchAnalytics, quickWinsCsvRows, quickWinsReport, quickWinsReportWith, readAhrefsApiKey, readAllTokens, readBingApiKey, readBoundedResponseText, readClickySiteKey, readClickySiteKeys, readConfig, readDataForSeoCredentials, readInstalledProviderPackages, readJson, readJsonOrUndefined, readOauthClient, readProviderExtensionAccount, readProviderExtensionCredentials, readProviderSecret, readTokens, recommendationForRule, reconcileExportPagesWithCrawl, redirectTrace, refreshAuthToken, refreshPrioritiesCsvFiles, refreshPrioritiesWorkflow, registrableDomain, removeInstalledProviderPackage, renderCrawlCsv, renderCrawlHtml, renderCrawlJunit, renderCrawlMarkdownTickets, renderCrawlPagesCsv, renderCrawlPretty, renderCsv, renderPresentationTablesMarkdown, renderWorkflowMarkdown, reportNarrative, requestHeaders, requirePageVerification, researchImportColumns, resetSeoData, resolveLocalSite, resolveSegmentRanges, resolveSeoCliPaths, reviewObservations, roundedPosition, runAnalyticsProviderLandingPages, runAnalyticsReport, runDoctor, runGa4Report, runProviderExtensionAction, runtimeForProvider, safeProviderAdapterError, saveInstalledProviderPackage, searchAnalyticsRows, searchUpdatesFromIncidents, secondPage, secondPageWith, segmentComparisonRange, segmentImpact, segmentRangeDays, seoErrorEnvelope, sessionSourceInListFilter, setActiveGoogleAccount, setTelemetryEnabled, setTokenStorageMode, shiftIsoDate, shouldExcludeBrandQuery, siteStartUrl, startCloudLogin, strikingDistance, strikingDistanceWith, summarizeCrawlReport, pageTechnicalSignals as technicalPageSignals, telemetryErrorCategory, toSeoError, tokenSchema, tokenStoreSchema, topFixes, trackTelemetryCommandFailed, trackTelemetryReportComplete, trackTelemetryReportFailed, trackTelemetryReportStart, trackTelemetrySetupComplete, trafficAnomaly, trafficAnomalyWith, typesafeDecisionModel, unavailableSegmentImpactReport, unicodeTokens, uninstallProviderExtension, updateCorrelation, updateNotice, updatePostmortemCsvFiles, updatePostmortemWorkflow, urlInspectionQuota, validateResearchImportColumnSources, verifyAnalyticsProvider, verifyProviderExtension, verifyQueryContent, verifyQueryContentWith, withAgentReportContract, withRankingHistory, workflowPresentation, writeAhrefsApiKey, writeBingApiKey, writeClickySiteKey, writeConfig, writeDataForSeoCredentials, writeInstalledProviderPackages, writeOauthClient, writeProviderExtensionAccount, writeProviderExtensionCredentials, writeProviderSecret, writeToCache, writeTokens, xRobotsDirectives };
22709
+ 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 };
22525
22710
  //# sourceMappingURL=index.d.ts.map