@canonry/canonry 7.70.0 → 7.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +0 -5
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +2 -1
  3. package/assets/assets/{AgentSetupPage-BSHWZvRa.js → AgentSetupPage-kkWYCvUB.js} +1 -1
  4. package/assets/assets/{AuditHistoryPanel-CkOJ_9_W.js → AuditHistoryPanel-BS-iFyHX.js} +1 -1
  5. package/assets/assets/{BacklinksPage-DrWQ2idL.js → BacklinksPage-BW2bEGF4.js} +1 -1
  6. package/assets/assets/{HistoryPage-XQL_fdA9.js → HistoryPage-Dh6o2iVd.js} +1 -1
  7. package/assets/assets/{MeasurementPropertyPage-Z7HN9XvJ.js → MeasurementPropertyPage-BsUyf7NF.js} +1 -1
  8. package/assets/assets/ProjectPage-CYBZBlk3.js +9 -0
  9. package/assets/assets/{RunsPage-DDlvUciW.js → RunsPage-D27pEHr4.js} +1 -1
  10. package/assets/assets/{SettingsPage-CajGcfAQ.js → SettingsPage-CkI60Uw0.js} +1 -1
  11. package/assets/assets/SiteHealthSection-BKHeLIQL.js +2 -0
  12. package/assets/assets/{ToneBadge-enK5ryht.js → ToneBadge-CmvL5mFG.js} +1 -1
  13. package/assets/assets/{TrafficPage-BlRi6C8Y.js → TrafficPage-x01Zc1a-.js} +1 -1
  14. package/assets/assets/{TrafficSourceDetailPage-DiUYQhDR.js → TrafficSourceDetailPage-DE-NyNGz.js} +1 -1
  15. package/assets/assets/{account-context-gUhEyKww.js → account-context-BwV6ox8O.js} +1 -1
  16. package/assets/assets/{card-BPDsfFv5.js → card-DhkoBNyY.js} +1 -1
  17. package/assets/assets/{extract-error-message-YbSa8SSn.js → extract-error-message-dNDtiSBo.js} +1 -1
  18. package/assets/assets/{format-helpers-B-WHGMGn.js → format-helpers-Bt4tx-f3.js} +1 -1
  19. package/assets/assets/{index-CigLVn5A.js → index-DtKWmlCj.js} +19 -19
  20. package/assets/assets/{index-CONZUwQB.css → index-Yn3nIj4B.css} +1 -1
  21. package/assets/assets/{query-client-DScmA_aM.js → query-client-D-zMw63p.js} +1 -1
  22. package/assets/assets/react-query-EdiRRB2q.js +1 -0
  23. package/assets/assets/{react-sigma_core.esm.min-CtveVGNY.js → react-sigma_core.esm.min-CmaI5ZWC.js} +1 -1
  24. package/assets/assets/{service--FVsrK0Z.js → service-C_Ai7oQC.js} +1 -1
  25. package/assets/index.html +8 -8
  26. package/dist/{ads-UTME46NF.js → ads-FFUUMS4J.js} +3 -3
  27. package/dist/{agent-PYDTNLR4.js → agent-LCD2VG7C.js} +7 -7
  28. package/dist/{agent-ask-NA4QFFM6.js → agent-ask-OBHTCYFR.js} +3 -3
  29. package/dist/{agent-conversations-3S56EX4U.js → agent-conversations-VMZ4NFIX.js} +3 -3
  30. package/dist/{agent-memory-D2RT5TVJ.js → agent-memory-UPFJFNWC.js} +3 -3
  31. package/dist/{agent-providers-5C2DRUR3.js → agent-providers-4GOWLBZK.js} +3 -3
  32. package/dist/{agent-transcript-SY5BZPO3.js → agent-transcript-RGXIVZUP.js} +3 -3
  33. package/dist/{analytics-GUENANBB.js → analytics-FBK4XV5P.js} +3 -3
  34. package/dist/{apply-R5K6RGEH.js → apply-Y2DVE3YB.js} +3 -3
  35. package/dist/{backfill-B2EXGQCW.js → backfill-ENGKBFKH.js} +9 -9
  36. package/dist/{backlinks-X55GUIQL.js → backlinks-YWHFC7DZ.js} +3 -3
  37. package/dist/{bing-5NTEC247.js → bing-7BP3DWPK.js} +3 -3
  38. package/dist/{bootstrap-UDEEVI4Z.js → bootstrap-Z7QSKVPL.js} +10 -10
  39. package/dist/{cdp-WWVZ6IBS.js → cdp-OL6RENO3.js} +7 -7
  40. package/dist/{chunk-HZ55UIKM.js → chunk-2PC54WLE.js} +4 -4
  41. package/dist/{chunk-ULUKHNE4.js → chunk-3AG3LPZX.js} +1 -1
  42. package/dist/{chunk-3LTLLHCD.js → chunk-4LTL5RNY.js} +4 -4
  43. package/dist/{chunk-3ZF3T3OG.js → chunk-6MYHGP46.js} +1 -1
  44. package/dist/{chunk-BRT5GE3Z.js → chunk-7OJQWLDI.js} +5 -5
  45. package/dist/{chunk-BGTJTKOJ.js → chunk-ATT3ZCSS.js} +3 -2
  46. package/dist/{chunk-KDV5NQZH.js → chunk-BADJCT6U.js} +1 -1
  47. package/dist/{chunk-QBR7BWO6.js → chunk-BKIFKB7E.js} +8 -8
  48. package/dist/{chunk-RPYSCFFA.js → chunk-BZZDFIY2.js} +1 -1
  49. package/dist/{chunk-R7RTWOOV.js → chunk-DRGCVTYH.js} +1 -1
  50. package/dist/{chunk-QNSMMQJY.js → chunk-GA2EHZTI.js} +7 -5
  51. package/dist/{chunk-MBNXKKOD.js → chunk-H4HNXCDF.js} +2 -2
  52. package/dist/{chunk-DW3KF33I.js → chunk-H6IQ4YCJ.js} +4 -4
  53. package/dist/{chunk-PHHQVV3G.js → chunk-IV6VZ63E.js} +3 -3
  54. package/dist/{chunk-7W4KNDAW.js → chunk-IZMT4WLZ.js} +2 -2
  55. package/dist/{chunk-CSDDKEL6.js → chunk-J523Y7X2.js} +1 -1
  56. package/dist/{chunk-6RI7JFFI.js → chunk-JE5QURTR.js} +1 -1
  57. package/dist/{chunk-CNSLBHFP.js → chunk-JEBY6MS6.js} +1 -1
  58. package/dist/{chunk-EIRIZPR6.js → chunk-JO73L677.js} +6 -3
  59. package/dist/{chunk-42JQQZZQ.js → chunk-L6WMECR5.js} +5 -5
  60. package/dist/{chunk-RVEXUQHP.js → chunk-MJYO6UK2.js} +2 -2
  61. package/dist/{chunk-NHF3OGZN.js → chunk-NZZWJCKS.js} +3 -3
  62. package/dist/{chunk-XOCF2U54.js → chunk-O7WOCTBD.js} +31 -1
  63. package/dist/{chunk-JNRMODJS.js → chunk-PPM6Z7CM.js} +1 -1
  64. package/dist/{chunk-RSK7E53V.js → chunk-Q25JQANW.js} +1 -1
  65. package/dist/{chunk-PJYXLC3D.js → chunk-QDN3FL2A.js} +1 -1
  66. package/dist/{chunk-SSNKQTRX.js → chunk-TEDY3MHN.js} +3 -3
  67. package/dist/{chunk-RJSJNR76.js → chunk-TOX6HAQJ.js} +3 -3
  68. package/dist/{chunk-OQR4F7WF.js → chunk-UWBJWKDQ.js} +2 -2
  69. package/dist/{chunk-3QHKN3JY.js → chunk-VH2KHJGT.js} +65 -33
  70. package/dist/{chunk-JGO7LGVN.js → chunk-VJFQNFOR.js} +36 -10
  71. package/dist/{chunk-SFMCFMJR.js → chunk-XR6ZVMYK.js} +1 -1
  72. package/dist/{chunk-6JGQT4OH.js → chunk-YXAKL5HM.js} +45 -2
  73. package/dist/{chunk-WOETP6NH.js → chunk-ZG4KG53J.js} +346 -336
  74. package/dist/{citations-ILU2CNT2.js → citations-RVSC67GE.js} +3 -3
  75. package/dist/{cli-catalog-ZBTUYNJA.js → cli-catalog-NEZE5QU5.js} +3 -3
  76. package/dist/{cli-commands-672L7BFD.js → cli-commands-5YNRJIN6.js} +7 -7
  77. package/dist/cli.js +13 -13
  78. package/dist/{competitor-NXSL3AWD.js → competitor-BX3M3OYS.js} +3 -3
  79. package/dist/{content-TGWYXNBI.js → content-PKJMVMHJ.js} +3 -3
  80. package/dist/{dashboard-IDCQTIYG.js → dashboard-FI5KKIP4.js} +6 -6
  81. package/dist/{demo-6X6IDMPT.js → demo-DQSDWOTF.js} +1 -1
  82. package/dist/{demo-server-HKJWIYPQ.js → demo-server-32RKOBFE.js} +11 -11
  83. package/dist/{discover-NW7NKL2Z.js → discover-JDP44ZHX.js} +3 -3
  84. package/dist/{discover-eval-2BVYL62I.js → discover-eval-6ORCVYYR.js} +3 -3
  85. package/dist/{doctor-6I3LPYM7.js → doctor-TVZRMBSS.js} +3 -3
  86. package/dist/{evidence-ZTAMPBEP.js → evidence-FNIAFBBG.js} +3 -3
  87. package/dist/{export-cmd-4CXUQVYT.js → export-cmd-HQNF2SSD.js} +3 -3
  88. package/dist/{ga-2YXMDGHQ.js → ga-PIO5OXMK.js} +3 -3
  89. package/dist/{gbp-LTPPWTUR.js → gbp-3R5FME43.js} +3 -3
  90. package/dist/{google-KTUJ4D3T.js → google-BYZREX2O.js} +4 -4
  91. package/dist/{google-marketing-FAKTAI5S.js → google-marketing-SPQ2GW6X.js} +1 -1
  92. package/dist/{health-cmd-C75E3NPQ.js → health-cmd-HH5RYMSV.js} +3 -3
  93. package/dist/{history-HE734BPT.js → history-Q35NLLMJ.js} +3 -3
  94. package/dist/index.d.ts +101 -65
  95. package/dist/index.js +24 -24
  96. package/dist/{init-M73CSTWU.js → init-O6PEZ2RT.js} +11 -11
  97. package/dist/{insights-4GUVXY2V.js → insights-SH73B4PD.js} +3 -3
  98. package/dist/intelligence-service-V2VS43H4.js +15 -0
  99. package/dist/{journeys-BZCKKFG7.js → journeys-SIV7HPW7.js} +3 -3
  100. package/dist/{keys-CMN3FUDW.js → keys-O656YWSW.js} +3 -3
  101. package/dist/{keyword-QUM65R7C.js → keyword-FZ2N4EW7.js} +3 -3
  102. package/dist/{logs-HH7EP7YK.js → logs-2NPN7HBI.js} +3 -3
  103. package/dist/{mcp-76T6WX4K.js → mcp-RHQY3DV6.js} +2 -2
  104. package/dist/mcp.js +9 -9
  105. package/dist/{measurement-plan-2D2KQLTW.js → measurement-plan-JQKVSJRL.js} +5 -5
  106. package/dist/{notify-VP5YYBJO.js → notify-VTAYBHC6.js} +3 -3
  107. package/dist/{organic-evidence-EAUZJVET.js → organic-evidence-HPXXEPOW.js} +3 -3
  108. package/dist/{overview-MCX3OHXK.js → overview-FSBNDYZJ.js} +4 -4
  109. package/dist/{project-HMELPKXT.js → project-MAPPXURS.js} +3 -3
  110. package/dist/{query-J7UTKCY5.js → query-R6DLPIPJ.js} +3 -3
  111. package/dist/{research-O4FYADRL.js → research-FXKOEUQB.js} +3 -3
  112. package/dist/{results-export-4JHIHSWW.js → results-export-X2PUM63S.js} +3 -3
  113. package/dist/{run-YJ3Y7FIE.js → run-6ENTG4IO.js} +4 -4
  114. package/dist/{schedule-6SXEB245.js → schedule-DMMVRT7P.js} +3 -3
  115. package/dist/{search-MVL346VH.js → search-FHI6APT7.js} +3 -3
  116. package/dist/{serve-GSPGAHMD.js → serve-KS6ABZHU.js} +25 -25
  117. package/dist/{session-KFFTQBJU.js → session-Q623G5DT.js} +12 -12
  118. package/dist/{settings-UKVP6TDD.js → settings-FMB4QED4.js} +3 -3
  119. package/dist/{skills-DF336KFJ.js → skills-HBIMHSOI.js} +2 -2
  120. package/dist/{snapshot-YKWGIRTM.js → snapshot-RBA2EL7R.js} +3 -3
  121. package/dist/{src-WDWTA7ON.js → src-BXXGJOQB.js} +2 -2
  122. package/dist/{status-4PDQOFYS.js → status-ATFDFAVG.js} +4 -4
  123. package/dist/{technical-aeo-XJRWNW24.js → technical-aeo-JWQTGCTB.js} +9 -5
  124. package/dist/{telemetry-TXB7NGPP.js → telemetry-6QFGJL2I.js} +4 -4
  125. package/dist/{tools-5DBHZB4K.js → tools-GNTPFDAF.js} +11 -11
  126. package/dist/{traffic-AP22ENAC.js → traffic-5R7M4CK5.js} +5 -5
  127. package/dist/{users-44XJB4ZN.js → users-24TIUYJY.js} +3 -3
  128. package/dist/{visibility-stats-5DMILJO6.js → visibility-stats-YLQPPBJJ.js} +3 -3
  129. package/dist/{wordpress-P6J44TMN.js → wordpress-7VDPHMUZ.js} +3 -3
  130. package/package.json +2 -2
  131. package/assets/assets/ProjectPage-DCOhyc0W.js +0 -9
  132. package/assets/assets/SiteHealthSection-Ch56JPKl.js +0 -2
  133. package/assets/assets/react-query-gGXPkSlb.js +0 -1
  134. package/dist/intelligence-service-PAMFRLPE.js +0 -15
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-3ZF3T3OG.js";
3
+ } from "./chunk-6MYHGP46.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-6RI7JFFI.js";
7
+ } from "./chunk-JE5QURTR.js";
8
8
 
9
9
  // src/setup-state.ts
10
10
  import fs from "fs";
@@ -28,7 +28,7 @@ async function buildSetupState() {
28
28
  }
29
29
  if (dbPath && fs.existsSync(dbPath)) {
30
30
  try {
31
- const { createClient, projects, queries: queriesTable } = await import("./src-WDWTA7ON.js");
31
+ const { createClient, projects, queries: queriesTable } = await import("./src-BXXGJOQB.js");
32
32
  const db = createClient(dbPath);
33
33
  project_count = db.select({ id: projects.id }).from(projects).all().length;
34
34
  const firstQuery = db.select({ id: queriesTable.id }).from(queriesTable).limit(1).all();
@@ -47,7 +47,7 @@ function queueServeHandoff() {
47
47
  async function runPendingServeHandoff(format) {
48
48
  if (!pendingServeHandoff) return;
49
49
  pendingServeHandoff = false;
50
- const { serveCommand } = await import("./serve-GSPGAHMD.js");
50
+ const { serveCommand } = await import("./serve-KS6ABZHU.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -23,7 +23,7 @@ import {
23
23
  measurementDraftUpsertGroupRequestSchema,
24
24
  measurementDraftUpsertMarketRequestSchema,
25
25
  measurementDraftUpsertTargetRequestSchema
26
- } from "./chunk-6JGQT4OH.js";
26
+ } from "./chunk-YXAKL5HM.js";
27
27
 
28
28
  // src/measurement-draft-actions.ts
29
29
  import { z } from "zod";
@@ -2,13 +2,13 @@ import {
2
2
  bucketCliCommandDuration,
3
3
  isTelemetryEnabled,
4
4
  trackEvent
5
- } from "./chunk-RVEXUQHP.js";
5
+ } from "./chunk-MJYO6UK2.js";
6
6
  import {
7
7
  getConfigDir
8
- } from "./chunk-6RI7JFFI.js";
8
+ } from "./chunk-JE5QURTR.js";
9
9
  import {
10
10
  currentOutcomeAttribution
11
- } from "./chunk-KDV5NQZH.js";
11
+ } from "./chunk-BADJCT6U.js";
12
12
  import {
13
13
  AGENT_NONE,
14
14
  OutcomeSurfaces,
@@ -19,7 +19,7 @@ import {
19
19
  integrationConnectionPropertiesSchema,
20
20
  normalizeAgentSlug,
21
21
  usageSurfaceSchema
22
- } from "./chunk-6JGQT4OH.js";
22
+ } from "./chunk-YXAKL5HM.js";
23
23
 
24
24
  // src/outcome-telemetry.ts
25
25
  import fs from "fs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-6JGQT4OH.js";
4
+ } from "./chunk-YXAKL5HM.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-DW3KF33I.js";
8
+ } from "./chunk-H6IQ4YCJ.js";
9
9
  import {
10
10
  CANONRY_MCP_TOOLKITS
11
11
  } from "./chunk-NDTU7FGL.js";
@@ -22,15 +22,15 @@ import {
22
22
  resolveApiKeyFor,
23
23
  resolveModelForProvider,
24
24
  validateAgentProviderRegistry
25
- } from "./chunk-6RI7JFFI.js";
25
+ } from "./chunk-JE5QURTR.js";
26
26
  import {
27
27
  CanonryMcpToolNames,
28
28
  canonryMcpTools
29
- } from "./chunk-QNSMMQJY.js";
29
+ } from "./chunk-GA2EHZTI.js";
30
30
  import {
31
31
  agentToolEvents,
32
32
  llmUsageEvents
33
- } from "./chunk-XOCF2U54.js";
33
+ } from "./chunk-O7WOCTBD.js";
34
34
  import {
35
35
  MeasurementPortfolioLists,
36
36
  SeoCapabilities,
@@ -39,7 +39,7 @@ import {
39
39
  describeError,
40
40
  validationError,
41
41
  visibilityReportRequestSchema
42
- } from "./chunk-6JGQT4OH.js";
42
+ } from "./chunk-YXAKL5HM.js";
43
43
 
44
44
  // src/agent/session.ts
45
45
  import fs3 from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-6RI7JFFI.js";
3
+ } from "./chunk-JE5QURTR.js";
4
4
  import {
5
5
  PACKAGE_VERSION
6
6
  } from "./chunk-AOJU5LKX.js";
@@ -36,7 +36,7 @@ import {
36
36
  sentimentSettingsReadSchema,
37
37
  sentimentSummaryReadSchema,
38
38
  upgradeCommandFor
39
- } from "./chunk-6JGQT4OH.js";
39
+ } from "./chunk-YXAKL5HM.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -6410,6 +6410,7 @@ var ApiClient = class {
6410
6410
  fetchState: opts?.fetchState,
6411
6411
  indexabilityState: opts?.indexabilityState,
6412
6412
  auditState: opts?.auditState,
6413
+ urlVersions: opts?.urlVersions,
6413
6414
  sort: opts?.sort,
6414
6415
  cursor: opts?.cursor,
6415
6416
  limit: opts?.limit !== void 0 ? String(opts.limit) : void 0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-6JGQT4OH.js";
4
+ } from "./chunk-YXAKL5HM.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -7,27 +7,27 @@ import {
7
7
  reparseStoredResult4,
8
8
  reparseStoredResult5,
9
9
  resolveStoredApiResponse
10
- } from "./chunk-EIRIZPR6.js";
10
+ } from "./chunk-JO73L677.js";
11
11
  import {
12
12
  loadConfig
13
- } from "./chunk-6RI7JFFI.js";
13
+ } from "./chunk-JE5QURTR.js";
14
14
  import {
15
15
  isMachineFormat
16
16
  } from "./chunk-HGMYEDAQ.js";
17
17
  import {
18
18
  determineCitationState
19
- } from "./chunk-R7RTWOOV.js";
19
+ } from "./chunk-DRGCVTYH.js";
20
20
  import {
21
21
  backfillProjectAnswerMentions,
22
22
  competitorIdentityColumns,
23
23
  createRunCompetitorResolver,
24
24
  readMarketCompetitorNames,
25
25
  refreshSnapshotMentionIdentity
26
- } from "./chunk-JGO7LGVN.js";
26
+ } from "./chunk-VJFQNFOR.js";
27
27
  import {
28
28
  classifyAiUserFetch,
29
29
  classifyCrawler
30
- } from "./chunk-CNSLBHFP.js";
30
+ } from "./chunk-JEBY6MS6.js";
31
31
  import {
32
32
  aiUserFetchEventsHourly,
33
33
  auditLog,
@@ -42,7 +42,7 @@ import {
42
42
  querySnapshots,
43
43
  rawEventSamples,
44
44
  runs
45
- } from "./chunk-XOCF2U54.js";
45
+ } from "./chunk-O7WOCTBD.js";
46
46
  import {
47
47
  ProviderNames,
48
48
  RetrievalContracts,
@@ -59,7 +59,7 @@ import {
59
59
  extractRecommendedCompetitors,
60
60
  normalizeUrlPath,
61
61
  openRouterRouteModel
62
- } from "./chunk-6JGQT4OH.js";
62
+ } from "./chunk-YXAKL5HM.js";
63
63
 
64
64
  // src/commands/backfill.ts
65
65
  import { setImmediate as yieldToEventLoop } from "timers/promises";
@@ -437,7 +437,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
437
437
  }
438
438
  }
439
439
  async function backfillInsightsCommand(project, opts) {
440
- const { IntelligenceService } = await import("./intelligence-service-PAMFRLPE.js");
440
+ const { IntelligenceService } = await import("./intelligence-service-V2VS43H4.js");
441
441
  const config = loadConfig();
442
442
  const db = createClient(config.database);
443
443
  migrate(db);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cloudflareQueueNameSchema
3
- } from "./chunk-6JGQT4OH.js";
3
+ } from "./chunk-YXAKL5HM.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-6JGQT4OH.js";
3
+ } from "./chunk-YXAKL5HM.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-CSDDKEL6.js";
5
+ } from "./chunk-J523Y7X2.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-ULUKHNE4.js";
9
+ } from "./chunk-3AG3LPZX.js";
10
10
  import {
11
11
  CliError
12
12
  } from "./chunk-HGMYEDAQ.js";
@@ -177,7 +177,7 @@ import {
177
177
  trafficSeriesGranularitySchema,
178
178
  visibilityCompareSelectionSchema,
179
179
  visibilityReportRequestSchema
180
- } from "./chunk-6JGQT4OH.js";
180
+ } from "./chunk-YXAKL5HM.js";
181
181
 
182
182
  // src/mcp/tool-registry.ts
183
183
  import { z as z2 } from "zod";
@@ -1034,7 +1034,8 @@ var technicalAeoCrawlPagesInputSchema = z2.object({
1034
1034
  inventoryEligible: z2.boolean().optional().describe("Filter Canonry technical-inventory eligibility. This is not actual Google index coverage."),
1035
1035
  fetchState: z2.string().min(1).optional().describe("Filter crawler fetch state, for example html, redirect, non-html, or fetch-error."),
1036
1036
  indexabilityState: z2.string().min(1).optional().describe("Filter crawler-derived indexability state. This is not Google index coverage."),
1037
- auditState: z2.string().min(1).optional().describe("Filter audit state."),
1037
+ auditState: z2.string().min(1).optional().describe("Filter audit state. url-version marks a URL version: fetched and classified, not scored."),
1038
+ urlVersions: z2.enum(["include", "exclude", "only"]).optional().describe("URL versions are parameter addresses whose canonical names the same path, so the site marks them as copies of that page; the audit does not score them or count them in fixes. include (default) keeps every address, exclude lists pages only (the dashboard view), only lists the URL versions with urlVersionOf. Once a few addresses with one parameter pattern prove to be copies, the crawl stops fetching that pattern; those have no rows and inventorySummary.urlVersionsNotFetched counts them."),
1038
1039
  sort: z2.enum(["url", "path", "score-asc", "score-desc"]).optional(),
1039
1040
  cursor: z2.string().min(1).optional().describe("Opaque cursor from the previous crawl-pages result."),
1040
1041
  limit: z2.number().int().positive().max(200).optional()
@@ -4150,7 +4151,7 @@ var rawCanonryMcpTools = [
4150
4151
  defineTool({
4151
4152
  name: "canonry_technical_aeo_crawl_pages",
4152
4153
  title: "List Technical AEO crawl pages",
4153
- description: "For a requested scan date pass date=YYYY-MM-DD. If the year was omitted and that date has no data, use availableScanDates.matchingMonthDayDates to resolve the year and request the exact returned date before concluding the historical scan is missing. recentDates and matchingMonthDayDates are bounded; totalDates and matchingMonthDayTotal report their full counts. No automatic date fallback. inventorySummary gives whole-snapshot eligible/excluded counts and disjoint excluded reasons; healthReasonCounts covers the filtered list before paging. Use these exact counts, never infer canonical-away from unknown indexability. healthReason distinguishes terminal redirects from canonical-to-other pages. Default runSelection reports same-date ambiguity and selects complete or most-pages evidence on the latest scan date. Read one bounded, cursor-paged list of canonical crawl nodes. Filter crawler-derived indexability and audit state, then follow nextCursor; this is technical inventory eligibility, not a claim about Google index coverage. `complete: false` means the crawl stopped at the budget named by `termination`, so a missing page or link is not proof it does not exist.",
4154
+ description: "For a requested scan date pass date=YYYY-MM-DD. If the year was omitted and that date has no data, use availableScanDates.matchingMonthDayDates to resolve the year and request the exact returned date before concluding the historical scan is missing. recentDates and matchingMonthDayDates are bounded; totalDates and matchingMonthDayTotal report their full counts. No automatic date fallback. inventorySummary gives whole-snapshot eligible/excluded counts, disjoint excluded reasons, and urlVersions (parameter copies of a page the audit did not score; pass urlVersions=exclude to list pages only); healthReasonCounts covers the filtered list before paging. Use these exact counts, never infer canonical-away from unknown indexability. healthReason distinguishes terminal redirects from canonical-to-other pages. Default runSelection reports same-date ambiguity and selects complete or most-pages evidence on the latest scan date. Read one bounded, cursor-paged list of canonical crawl nodes. Filter crawler-derived indexability and audit state, then follow nextCursor; this is technical inventory eligibility, not a claim about Google index coverage. `complete: false` means the crawl stopped at the budget named by `termination`, so a missing page or link is not proof it does not exist.",
4154
4155
  access: "read",
4155
4156
  tier: "monitoring",
4156
4157
  inputSchema: technicalAeoCrawlPagesInputSchema,
@@ -4163,6 +4164,7 @@ var rawCanonryMcpTools = [
4163
4164
  fetchState: input.fetchState,
4164
4165
  indexabilityState: input.indexabilityState,
4165
4166
  auditState: input.auditState,
4167
+ urlVersions: input.urlVersions,
4166
4168
  sort: input.sort,
4167
4169
  cursor: input.cursor,
4168
4170
  limit: input.limit
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-3LTLLHCD.js";
3
+ } from "./chunk-4LTL5RNY.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-RVEXUQHP.js";
6
+ } from "./chunk-MJYO6UK2.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-BGTJTKOJ.js";
3
+ } from "./chunk-ATT3ZCSS.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-QNSMMQJY.js";
7
+ } from "./chunk-GA2EHZTI.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-JGO7LGVN.js";
13
+ } from "./chunk-VJFQNFOR.js";
14
14
  import {
15
15
  DEFAULT_COMPETITOR_AUTO_ALIAS_MODE,
16
16
  MeasurementPortfolioLists,
@@ -23,7 +23,7 @@ import {
23
23
  seoDatasetWithoutVendor,
24
24
  seoProviderSchema,
25
25
  truncateUtf16
26
- } from "./chunk-6JGQT4OH.js";
26
+ } from "./chunk-YXAKL5HM.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -6,12 +6,12 @@ import {
6
6
  import {
7
7
  createApiClient,
8
8
  runWithUsageTags
9
- } from "./chunk-BGTJTKOJ.js";
9
+ } from "./chunk-ATT3ZCSS.js";
10
10
  import {
11
11
  canonryMcpTools,
12
12
  mcpOutputSchema,
13
13
  toolOperationAccess
14
- } from "./chunk-QNSMMQJY.js";
14
+ } from "./chunk-GA2EHZTI.js";
15
15
  import {
16
16
  PACKAGE_VERSION
17
17
  } from "./chunk-AOJU5LKX.js";
@@ -24,7 +24,7 @@ import {
24
24
  isReadOnlyKey,
25
25
  restrictedWriteScopes,
26
26
  upgradeCaveatFor
27
- } from "./chunk-6JGQT4OH.js";
27
+ } from "./chunk-YXAKL5HM.js";
28
28
 
29
29
  // src/mcp/server.ts
30
30
  import { randomUUID } from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-XOCF2U54.js";
8
+ } from "./chunk-O7WOCTBD.js";
9
9
  import {
10
10
  SITE_CRAWL_GRAPH_MAX_EDGES,
11
11
  SITE_CRAWL_GRAPH_MAX_NODES,
@@ -15,7 +15,7 @@ import {
15
15
  factorStatusFromDistribution,
16
16
  factorStatusFromScore,
17
17
  roundPreservingTotal
18
- } from "./chunk-6JGQT4OH.js";
18
+ } from "./chunk-YXAKL5HM.js";
19
19
 
20
20
  // src/site-audit-factors.ts
21
21
  function recordedSharePct(factor) {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-6JGQT4OH.js";
7
+ } from "./chunk-YXAKL5HM.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -20,7 +20,7 @@ import {
20
20
  resolveProviderModel,
21
21
  schedulableRunKindSchema,
22
22
  sentimentEvaluatorProviderSchema
23
- } from "./chunk-6JGQT4OH.js";
23
+ } from "./chunk-YXAKL5HM.js";
24
24
 
25
25
  // ../config/src/index.ts
26
26
  import { z as z4 } from "zod";
@@ -8,7 +8,7 @@ import {
8
8
  classifyJourneyEntry,
9
9
  hostMatchesDomain,
10
10
  hostOf
11
- } from "./chunk-6JGQT4OH.js";
11
+ } from "./chunk-YXAKL5HM.js";
12
12
 
13
13
  // ../integration-traffic/src/ip-ranges/amazonbot.json
14
14
  var amazonbot_default = {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseJsonColumn
3
- } from "./chunk-XOCF2U54.js";
3
+ } from "./chunk-O7WOCTBD.js";
4
4
  import {
5
5
  AI_ENGINE_DOMAINS,
6
6
  AI_ENGINE_SELF_DOMAINS,
@@ -26,7 +26,7 @@ import {
26
26
  retryAfterDelayMs,
27
27
  usageCount,
28
28
  withRetry
29
- } from "./chunk-6JGQT4OH.js";
29
+ } from "./chunk-YXAKL5HM.js";
30
30
 
31
31
  // ../provider-openai/src/normalize.ts
32
32
  import OpenAI from "openai";
@@ -1618,6 +1618,7 @@ function toRawQueryResult3(raw) {
1618
1618
  stopReason: raw.stopReason
1619
1619
  };
1620
1620
  }
1621
+ var QUERY_ONLY_PROMPT_TOKEN_LIMIT = 60;
1621
1622
  function readRetrievalStatus(rawResponse) {
1622
1623
  const response = rawResponse;
1623
1624
  if (usageCount(response.usageMetadata?.toolUsePromptTokenCount) > 0) return RetrievalStatuses.used;
@@ -1631,7 +1632,9 @@ function readRetrievalStatus(rawResponse) {
1631
1632
  }
1632
1633
  const parts = candidate.content?.parts;
1633
1634
  const hasAnswer = Array.isArray(parts) && parts.some((part) => !part.thought && typeof part.text === "string" && part.text.trim().length > 0);
1634
- return candidate.finishReason === FinishReason.STOP && hasAnswer ? RetrievalStatuses["not-used"] : RetrievalStatuses.unknown;
1635
+ if (candidate.finishReason !== FinishReason.STOP || !hasAnswer) return RetrievalStatuses.unknown;
1636
+ const promptTokens = usageCount(response.usageMetadata?.promptTokenCount);
1637
+ return promptTokens > 0 && promptTokens <= QUERY_ONLY_PROMPT_TOKEN_LIMIT ? RetrievalStatuses["not-used"] : RetrievalStatuses.unknown;
1635
1638
  }
1636
1639
  var geminiAdapter = {
1637
1640
  name: "gemini",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pickProjectCitedDomain
3
- } from "./chunk-R7RTWOOV.js";
3
+ } from "./chunk-DRGCVTYH.js";
4
4
  import {
5
5
  GBP_INSIGHT_PROVIDER,
6
6
  PERSISTENT_GAP_THRESHOLD,
@@ -14,10 +14,10 @@ import {
14
14
  mergeGscQueryTotalsWithFallback,
15
15
  readGscQueryDailyRows,
16
16
  readLatestGscDataDate
17
- } from "./chunk-JGO7LGVN.js";
17
+ } from "./chunk-VJFQNFOR.js";
18
18
  import {
19
19
  getRequestContext
20
- } from "./chunk-KDV5NQZH.js";
20
+ } from "./chunk-BADJCT6U.js";
21
21
  import {
22
22
  competitors,
23
23
  gbpDailyMetrics,
@@ -35,7 +35,7 @@ import {
35
35
  queries,
36
36
  querySnapshots,
37
37
  runs
38
- } from "./chunk-XOCF2U54.js";
38
+ } from "./chunk-O7WOCTBD.js";
39
39
  import {
40
40
  CitationStates,
41
41
  RunKinds,
@@ -45,7 +45,7 @@ import {
45
45
  effectiveDomains,
46
46
  redactLogString,
47
47
  redactLogValue
48
- } from "./chunk-6JGQT4OH.js";
48
+ } from "./chunk-YXAKL5HM.js";
49
49
 
50
50
  // src/intelligence-service.ts
51
51
  import { eq, desc, asc, and, ne, or, inArray, gte, lte, isNull, sql, exists } from "drizzle-orm";
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-6RI7JFFI.js";
8
+ } from "./chunk-JE5QURTR.js";
9
9
  import {
10
10
  CANONRY_NPM_PACKAGE_URL,
11
11
  compareSemver,
@@ -18,7 +18,7 @@ import {
18
18
  updateCheckEnvOptOut,
19
19
  upgradeCaveatFor,
20
20
  upgradeCommandFor
21
- } from "./chunk-6JGQT4OH.js";
21
+ } from "./chunk-YXAKL5HM.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-PJYXLC3D.js";
6
+ } from "./chunk-QDN3FL2A.js";
7
7
  import {
8
8
  emitJsonl
9
9
  } from "./chunk-Z7IUAJOF.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-HGMYEDAQ.js";
15
15
  import {
16
16
  OperationAccesses
17
- } from "./chunk-6JGQT4OH.js";
17
+ } from "./chunk-YXAKL5HM.js";
18
18
 
19
19
  // src/cli-catalog.ts
20
20
  import { createRequire } from "module";
@@ -111,7 +111,7 @@ async function dispatchRegisteredCommand(args, fallbackFormat, specs) {
111
111
  const accessValue = accessFilterFromArgs(argsWithoutHelp);
112
112
  validateAccessFilter(accessValue);
113
113
  if (fallbackFormat !== "text") {
114
- const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-ZBTUYNJA.js");
114
+ const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-NEZE5QU5.js");
115
115
  const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
116
116
  printCliCatalog2(specs, fallbackFormat, group2, accessValue);
117
117
  return true;
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-6JGQT4OH.js";
23
+ } from "./chunk-YXAKL5HM.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -1298,6 +1298,8 @@ var siteCrawlAttempts = sqliteTable2("site_crawl_attempts", {
1298
1298
  pagesFetched: integer2("pages_fetched").notNull().default(0),
1299
1299
  pagesEligible: integer2("pages_eligible").notNull().default(0),
1300
1300
  pagesErrored: integer2("pages_errored").notNull().default(0),
1301
+ /** URL versions the crawl recognised by parameter pattern and did not fetch; they have no page rows. */
1302
+ urlVersionsSkipped: integer2("url_versions_skipped").notNull().default(0),
1301
1303
  edgesDiscovered: integer2("edges_discovered").notNull().default(0),
1302
1304
  startedAt: text2("started_at"),
1303
1305
  finishedAt: text2("finished_at"),
@@ -1415,6 +1417,13 @@ var siteCrawlPages = sqliteTable2("site_crawl_pages", {
1415
1417
  * column existed, which reads must report rather than treat as a state.
1416
1418
  */
1417
1419
  healthState: text2("health_state"),
1420
+ /**
1421
+ * The canonical page this address is a URL version of (contract
1422
+ * `siteCrawlUrlVersionOf`), written at publish time; such a row is not
1423
+ * scored. NULL for a page, and for every row of a scan published before the
1424
+ * audit set URL versions aside.
1425
+ */
1426
+ urlVersionOf: text2("url_version_of"),
1418
1427
  auditState: text2("audit_state").notNull().default("pending"),
1419
1428
  auditScore: real("audit_score"),
1420
1429
  auditFields: text2("audit_fields", { mode: "json" }).$type().notNull().default({}),
@@ -8254,6 +8263,27 @@ var MIGRATION_VERSIONS = [
8254
8263
  statements: [
8255
8264
  `ALTER TABLE schedules ADD COLUMN enabled_at TEXT`
8256
8265
  ]
8266
+ },
8267
+ {
8268
+ // The page a crawled address is a URL version of: a parameter copy whose
8269
+ // canonical names the same path, which the audit no longer scores.
8270
+ // Nullable with no default and no backfill: a scan published before this
8271
+ // scored every address, so its rows truthfully read as pages.
8272
+ version: 197,
8273
+ name: "site-crawl-url-versions",
8274
+ statements: [
8275
+ `ALTER TABLE site_crawl_pages ADD COLUMN url_version_of TEXT`
8276
+ ]
8277
+ },
8278
+ {
8279
+ // URL versions a crawl skipped without fetching, once their parameter
8280
+ // pattern proved to make copies. They have no page rows, so the count
8281
+ // lives on the attempt. 0 for earlier scans, which fetched every address.
8282
+ version: 198,
8283
+ name: "site-crawl-url-versions-skipped",
8284
+ statements: [
8285
+ `ALTER TABLE site_crawl_attempts ADD COLUMN url_versions_skipped INTEGER NOT NULL DEFAULT 0`
8286
+ ]
8257
8287
  }
8258
8288
  ];
8259
8289
  var AERO_LEDGER_REBUILDS = [
@@ -15,7 +15,7 @@ import {
15
15
  formatCanonryPluginUpdateHint,
16
16
  formatCanonryPluginVersionMismatch,
17
17
  skillsClientSchema
18
- } from "./chunk-6JGQT4OH.js";
18
+ } from "./chunk-YXAKL5HM.js";
19
19
 
20
20
  // src/commands/skills.ts
21
21
  import crypto from "crypto";
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-HGMYEDAQ.js";
9
9
  import {
10
10
  describeError
11
- } from "./chunk-6JGQT4OH.js";
11
+ } from "./chunk-YXAKL5HM.js";
12
12
 
13
13
  // src/commands/mcp.ts
14
14
  import fs from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  AppError,
6
6
  parseWindowIn,
7
7
  resolveDateRange
8
- } from "./chunk-6JGQT4OH.js";
8
+ } from "./chunk-YXAKL5HM.js";
9
9
 
10
10
  // src/cli-access.ts
11
11
  var CLI_ACCESS_BY_ID = Object.freeze({
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-BGTJTKOJ.js";
3
+ } from "./chunk-ATT3ZCSS.js";
4
4
  import {
5
5
  emitJsonl
6
6
  } from "./chunk-Z7IUAJOF.js";
7
7
  import {
8
8
  measurementDraftOperationSchema,
9
9
  runMeasurementDraftAction
10
- } from "./chunk-ULUKHNE4.js";
10
+ } from "./chunk-3AG3LPZX.js";
11
11
  import {
12
12
  isMachineFormat,
13
13
  systemError
@@ -37,7 +37,7 @@ import {
37
37
  unattributedAnswersLabel,
38
38
  uncheckedSourcesLabel,
39
39
  visibilityReportRequestSchema
40
- } from "./chunk-6JGQT4OH.js";
40
+ } from "./chunk-YXAKL5HM.js";
41
41
 
42
42
  // src/commands/measurement-plan.ts
43
43
  import crypto from "crypto";
@@ -2,18 +2,18 @@ import {
2
2
  configExists,
3
3
  loadConfigRaw,
4
4
  saveConfigPatch
5
- } from "./chunk-6RI7JFFI.js";
5
+ } from "./chunk-JE5QURTR.js";
6
6
  import {
7
7
  BUNDLED_SKILL_NAMES,
8
8
  installSkills
9
- } from "./chunk-JNRMODJS.js";
9
+ } from "./chunk-PPM6Z7CM.js";
10
10
  import {
11
11
  PACKAGE_VERSION
12
12
  } from "./chunk-AOJU5LKX.js";
13
13
  import {
14
14
  SKILL_MANIFEST_FILENAME,
15
15
  SkillsClients
16
- } from "./chunk-6JGQT4OH.js";
16
+ } from "./chunk-YXAKL5HM.js";
17
17
 
18
18
  // src/skills-autosync.ts
19
19
  import fs from "fs";