@canonry/canonry 7.68.2 → 7.70.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 (152) hide show
  1. package/assets/assets/AgentSetupPage-BSHWZvRa.js +17 -0
  2. package/assets/assets/AuditHistoryPanel-CkOJ_9_W.js +1 -0
  3. package/assets/assets/BacklinksPage-DrWQ2idL.js +1 -0
  4. package/assets/assets/ChartPrimitives-CfjGDL5d.js +1 -0
  5. package/assets/assets/{Hint-C0TmIzHX.js → Hint-Ro2RKH6t.js} +1 -1
  6. package/assets/assets/{HistoryPage-DMU_b4kk.js → HistoryPage-XQL_fdA9.js} +1 -1
  7. package/assets/assets/{InfoTooltip-BbdxCAup.js → InfoTooltip-CJ3IWqBk.js} +1 -1
  8. package/assets/assets/MeasurementPropertyPage-Z7HN9XvJ.js +4 -0
  9. package/assets/assets/ProjectPage-DCOhyc0W.js +9 -0
  10. package/assets/assets/RunsPage-DDlvUciW.js +1 -0
  11. package/assets/assets/SettingsPage-CajGcfAQ.js +1 -0
  12. package/assets/assets/SiteHealthSection-Ch56JPKl.js +2 -0
  13. package/assets/assets/{ToneBadge-B8lm5z8O.js → ToneBadge-enK5ryht.js} +2 -2
  14. package/assets/assets/TrafficPage-BlRi6C8Y.js +40 -0
  15. package/assets/assets/TrafficSourceDetailPage-DiUYQhDR.js +1 -0
  16. package/assets/assets/{account-context-VRNXJv_l.js → account-context-gUhEyKww.js} +1 -1
  17. package/assets/assets/card-BPDsfFv5.js +1 -0
  18. package/assets/assets/{extract-error-message-Ba5pz5dQ.js → extract-error-message-YbSa8SSn.js} +1 -1
  19. package/assets/assets/{format-helpers-C2il_710.js → format-helpers-B-WHGMGn.js} +1 -1
  20. package/assets/assets/index-CONZUwQB.css +1 -0
  21. package/assets/assets/index-CigLVn5A.js +60 -0
  22. package/assets/assets/{query-client-DyFmy9AJ.js → query-client-DScmA_aM.js} +1 -1
  23. package/assets/assets/{react-query-BcEtnzKt.js → react-query-gGXPkSlb.js} +1 -1
  24. package/assets/assets/{react-sigma_core.esm.min-Cd5EDtIB.js → react-sigma_core.esm.min-CtveVGNY.js} +1 -1
  25. package/assets/assets/service--FVsrK0Z.js +1 -0
  26. package/assets/assets/{vendor-lucide-4KkDquAu.js → vendor-lucide-BILL9eZH.js} +1 -1
  27. package/assets/assets/{vendor-markdown-9SSeLNHZ.js → vendor-markdown-DNTP_967.js} +1 -1
  28. package/assets/assets/{vendor-radix-BuErWiA2.js → vendor-radix-C6jOoh_7.js} +1 -1
  29. package/assets/assets/{vendor-recharts-qIim36Mt.js → vendor-recharts-PsGDYxIT.js} +1 -1
  30. package/assets/assets/{vendor-tanstack-pEsPGDvT.js → vendor-tanstack-BoP7BGaH.js} +1 -1
  31. package/assets/index.html +36 -16
  32. package/dist/{ads-4NQ5BO2A.js → ads-UTME46NF.js} +3 -3
  33. package/dist/{agent-SR7IUYLK.js → agent-PYDTNLR4.js} +7 -7
  34. package/dist/{agent-ask-F3T4GB33.js → agent-ask-NA4QFFM6.js} +3 -3
  35. package/dist/{agent-conversations-D54I2N5I.js → agent-conversations-3S56EX4U.js} +3 -3
  36. package/dist/{agent-memory-BWUJGV3E.js → agent-memory-D2RT5TVJ.js} +3 -3
  37. package/dist/{agent-providers-WNKOKIZY.js → agent-providers-5C2DRUR3.js} +3 -3
  38. package/dist/{agent-transcript-GM22FSJK.js → agent-transcript-SY5BZPO3.js} +3 -3
  39. package/dist/{analytics-RLLQBQOK.js → analytics-GUENANBB.js} +3 -3
  40. package/dist/{apply-RGJKLQKC.js → apply-R5K6RGEH.js} +3 -3
  41. package/dist/{backfill-GRVBAKFQ.js → backfill-B2EXGQCW.js} +9 -9
  42. package/dist/{backlinks-VE2JOWKE.js → backlinks-X55GUIQL.js} +3 -3
  43. package/dist/{bing-BUSRXSSR.js → bing-5NTEC247.js} +3 -3
  44. package/dist/{bootstrap-5KXIZP4O.js → bootstrap-UDEEVI4Z.js} +10 -10
  45. package/dist/{cdp-RR5HU43T.js → cdp-WWVZ6IBS.js} +7 -7
  46. package/dist/{chunk-4Q64QWKU.js → chunk-3LTLLHCD.js} +4 -4
  47. package/dist/{chunk-YTYOUQQ7.js → chunk-3QHKN3JY.js} +31 -23
  48. package/dist/{chunk-535S4WXN.js → chunk-3ZF3T3OG.js} +1 -1
  49. package/dist/{chunk-KXJDLN64.js → chunk-42JQQZZQ.js} +5 -5
  50. package/dist/{chunk-6R76X2XV.js → chunk-6JGQT4OH.js} +25 -2
  51. package/dist/{chunk-D33TZL7S.js → chunk-6RI7JFFI.js} +1 -1
  52. package/dist/{chunk-34GYS64G.js → chunk-7W4KNDAW.js} +2 -2
  53. package/dist/{chunk-CUR2SI66.js → chunk-BGTJTKOJ.js} +2 -2
  54. package/dist/{chunk-JZRCF3IX.js → chunk-BRT5GE3Z.js} +5 -5
  55. package/dist/{chunk-ROCSYWLF.js → chunk-CNSLBHFP.js} +1 -1
  56. package/dist/{chunk-TPZ6RLGX.js → chunk-CSDDKEL6.js} +1 -1
  57. package/dist/{chunk-LX5IQZHL.js → chunk-DW3KF33I.js} +4 -4
  58. package/dist/{chunk-35XANOXF.js → chunk-EIRIZPR6.js} +2 -2
  59. package/dist/{chunk-7PPEX3GD.js → chunk-HZ55UIKM.js} +4 -4
  60. package/dist/{chunk-D4TXUHVA.js → chunk-JGO7LGVN.js} +60 -10
  61. package/dist/{chunk-MDJG5NPR.js → chunk-JNRMODJS.js} +1 -1
  62. package/dist/{chunk-FLCTZSLI.js → chunk-KDV5NQZH.js} +1 -1
  63. package/dist/{chunk-BVEACCUM.js → chunk-MBNXKKOD.js} +2 -2
  64. package/dist/{chunk-T742QYXD.js → chunk-NHF3OGZN.js} +3 -3
  65. package/dist/{chunk-UHDLVX3T.js → chunk-OQR4F7WF.js} +2 -2
  66. package/dist/{chunk-AGHKWDUB.js → chunk-PHHQVV3G.js} +3 -3
  67. package/dist/{chunk-4PDSDRB2.js → chunk-PJYXLC3D.js} +1 -1
  68. package/dist/{chunk-CQVK5RLO.js → chunk-QBR7BWO6.js} +8 -8
  69. package/dist/{chunk-4KVUUBKF.js → chunk-QNSMMQJY.js} +3 -3
  70. package/dist/{chunk-R5YKG2YP.js → chunk-R7RTWOOV.js} +1 -1
  71. package/dist/{chunk-4U3HIUCW.js → chunk-RJSJNR76.js} +3 -3
  72. package/dist/{chunk-XU7GZ544.js → chunk-RPYSCFFA.js} +1 -1
  73. package/dist/{chunk-2M27P4W5.js → chunk-RSK7E53V.js} +1 -1
  74. package/dist/{chunk-HF7ONR3Z.js → chunk-RVEXUQHP.js} +2 -2
  75. package/dist/{chunk-ON2RUGPD.js → chunk-SFMCFMJR.js} +1 -1
  76. package/dist/{chunk-VXBAMLKH.js → chunk-SSNKQTRX.js} +3 -3
  77. package/dist/{chunk-5TCY7FYS.js → chunk-ULUKHNE4.js} +1 -1
  78. package/dist/{chunk-JQGH3D7W.js → chunk-WOETP6NH.js} +334 -334
  79. package/dist/{chunk-QZUEQP5G.js → chunk-XOCF2U54.js} +1 -1
  80. package/dist/{citations-IYQAT5QA.js → citations-ILU2CNT2.js} +3 -3
  81. package/dist/{cli-catalog-U5ZXWV7J.js → cli-catalog-ZBTUYNJA.js} +3 -3
  82. package/dist/{cli-commands-MMMD7K74.js → cli-commands-672L7BFD.js} +7 -7
  83. package/dist/cli.js +13 -13
  84. package/dist/{competitor-RRISAXMS.js → competitor-NXSL3AWD.js} +3 -3
  85. package/dist/{content-NBEVQ7CZ.js → content-TGWYXNBI.js} +3 -3
  86. package/dist/{dashboard-EMHIZOZ4.js → dashboard-IDCQTIYG.js} +6 -6
  87. package/dist/{demo-57LZOEH6.js → demo-6X6IDMPT.js} +1 -1
  88. package/dist/{demo-server-EGKJKILE.js → demo-server-HKJWIYPQ.js} +11 -11
  89. package/dist/{discover-L5EFJ6AD.js → discover-NW7NKL2Z.js} +3 -3
  90. package/dist/{discover-eval-6JJZLKRJ.js → discover-eval-2BVYL62I.js} +3 -3
  91. package/dist/{doctor-QBTFEURQ.js → doctor-6I3LPYM7.js} +3 -3
  92. package/dist/{evidence-I5MK557J.js → evidence-ZTAMPBEP.js} +3 -3
  93. package/dist/{export-cmd-36EZW5ZP.js → export-cmd-4CXUQVYT.js} +3 -3
  94. package/dist/{ga-7GUXDQ3L.js → ga-2YXMDGHQ.js} +3 -3
  95. package/dist/{gbp-W7YHYMB7.js → gbp-LTPPWTUR.js} +3 -3
  96. package/dist/{google-OXQFPJ76.js → google-KTUJ4D3T.js} +4 -4
  97. package/dist/{google-marketing-TKCACXPQ.js → google-marketing-FAKTAI5S.js} +1 -1
  98. package/dist/{health-cmd-PG3ST3S6.js → health-cmd-C75E3NPQ.js} +3 -3
  99. package/dist/{history-NWLOV4HF.js → history-HE734BPT.js} +3 -3
  100. package/dist/index.d.ts +71 -71
  101. package/dist/index.js +24 -24
  102. package/dist/{init-3I6WH2FY.js → init-M73CSTWU.js} +11 -11
  103. package/dist/{insights-2XU6EXSV.js → insights-4GUVXY2V.js} +3 -3
  104. package/dist/intelligence-service-PAMFRLPE.js +15 -0
  105. package/dist/{journeys-LIZVLLV5.js → journeys-BZCKKFG7.js} +3 -3
  106. package/dist/{keys-M4WPOLHC.js → keys-CMN3FUDW.js} +3 -3
  107. package/dist/{keyword-TETX5PQP.js → keyword-QUM65R7C.js} +3 -3
  108. package/dist/{logs-BI4265UF.js → logs-HH7EP7YK.js} +3 -3
  109. package/dist/{mcp-RA6NUGQM.js → mcp-76T6WX4K.js} +2 -2
  110. package/dist/mcp.js +9 -9
  111. package/dist/{measurement-plan-LM5GXYNS.js → measurement-plan-2D2KQLTW.js} +5 -5
  112. package/dist/{notify-BFKYHACB.js → notify-VP5YYBJO.js} +3 -3
  113. package/dist/{organic-evidence-RUBPJCQ4.js → organic-evidence-EAUZJVET.js} +3 -3
  114. package/dist/{overview-6WOQ7K7F.js → overview-MCX3OHXK.js} +4 -4
  115. package/dist/{project-2DMAPH2U.js → project-HMELPKXT.js} +3 -3
  116. package/dist/{query-SAWKYRSY.js → query-J7UTKCY5.js} +3 -3
  117. package/dist/{research-J4J527SF.js → research-O4FYADRL.js} +3 -3
  118. package/dist/{results-export-SESXZCWZ.js → results-export-4JHIHSWW.js} +3 -3
  119. package/dist/{run-XTG3RSBA.js → run-YJ3Y7FIE.js} +4 -4
  120. package/dist/{schedule-WQUD7BAI.js → schedule-6SXEB245.js} +3 -3
  121. package/dist/{search-QNYEHVCA.js → search-MVL346VH.js} +3 -3
  122. package/dist/{serve-7SCK3TEE.js → serve-GSPGAHMD.js} +25 -25
  123. package/dist/{session-KB3HFDGB.js → session-KFFTQBJU.js} +12 -12
  124. package/dist/{settings-P5E7KIOV.js → settings-UKVP6TDD.js} +3 -3
  125. package/dist/{skills-YQDZ6EOW.js → skills-DF336KFJ.js} +2 -2
  126. package/dist/{snapshot-LMBEQKXR.js → snapshot-YKWGIRTM.js} +3 -3
  127. package/dist/{src-X4GNC6AB.js → src-WDWTA7ON.js} +2 -2
  128. package/dist/{status-4G7OU4RY.js → status-4PDQOFYS.js} +4 -4
  129. package/dist/{technical-aeo-TBCA6DF2.js → technical-aeo-XJRWNW24.js} +3 -3
  130. package/dist/{telemetry-JGUQ6S45.js → telemetry-TXB7NGPP.js} +4 -4
  131. package/dist/{tools-FB7DZH74.js → tools-5DBHZB4K.js} +11 -11
  132. package/dist/{traffic-U6MUCCBI.js → traffic-AP22ENAC.js} +5 -5
  133. package/dist/{users-P7BMJH2I.js → users-44XJB4ZN.js} +3 -3
  134. package/dist/{visibility-stats-3BJR34GR.js → visibility-stats-5DMILJO6.js} +3 -3
  135. package/dist/{wordpress-X5FQOR5K.js → wordpress-P6J44TMN.js} +3 -3
  136. package/package.json +1 -1
  137. package/assets/assets/AgentSetupPage-8oLO0OyH.js +0 -17
  138. package/assets/assets/AuditHistoryPanel-DXXGdrLo.js +0 -1
  139. package/assets/assets/BacklinksPage-CEJPc6fQ.js +0 -1
  140. package/assets/assets/ChartPrimitives-CksxPvHn.js +0 -1
  141. package/assets/assets/MeasurementPropertyPage--nWpGvGH.js +0 -4
  142. package/assets/assets/ProjectPage-of9Q7JDS.js +0 -9
  143. package/assets/assets/RunsPage-BAs6sABy.js +0 -1
  144. package/assets/assets/SettingsPage-DcSDIWnl.js +0 -1
  145. package/assets/assets/SiteHealthSection-DS4icWI5.js +0 -2
  146. package/assets/assets/TrafficPage-CxFJj1rx.js +0 -40
  147. package/assets/assets/TrafficSourceDetailPage-C2pV1K3V.js +0 -1
  148. package/assets/assets/card-CPDjkZ38.js +0 -1
  149. package/assets/assets/index-CqNwsqjm.css +0 -1
  150. package/assets/assets/index-XtskVqLa.js +0 -60
  151. package/assets/assets/service-CREaLXip.js +0 -1
  152. package/dist/intelligence-service-VUOMVRAD.js +0 -15
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-LX5IQZHL.js";
8
+ } from "./chunk-DW3KF33I.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-D33TZL7S.js";
25
+ } from "./chunk-6RI7JFFI.js";
26
26
  import {
27
27
  CanonryMcpToolNames,
28
28
  canonryMcpTools
29
- } from "./chunk-4KVUUBKF.js";
29
+ } from "./chunk-QNSMMQJY.js";
30
30
  import {
31
31
  agentToolEvents,
32
32
  llmUsageEvents
33
- } from "./chunk-QZUEQP5G.js";
33
+ } from "./chunk-XOCF2U54.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-6R76X2XV.js";
42
+ } from "./chunk-6JGQT4OH.js";
43
43
 
44
44
  // src/agent/session.ts
45
45
  import fs3 from "fs";
@@ -8,7 +8,7 @@ import {
8
8
  classifyJourneyEntry,
9
9
  hostMatchesDomain,
10
10
  hostOf
11
- } from "./chunk-6R76X2XV.js";
11
+ } from "./chunk-6JGQT4OH.js";
12
12
 
13
13
  // ../integration-traffic/src/ip-ranges/amazonbot.json
14
14
  var amazonbot_default = {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-6R76X2XV.js";
7
+ } from "./chunk-6JGQT4OH.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-CUR2SI66.js";
3
+ } from "./chunk-BGTJTKOJ.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-4KVUUBKF.js";
7
+ } from "./chunk-QNSMMQJY.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-D4TXUHVA.js";
13
+ } from "./chunk-JGO7LGVN.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-6R76X2XV.js";
26
+ } from "./chunk-6JGQT4OH.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseJsonColumn
3
- } from "./chunk-QZUEQP5G.js";
3
+ } from "./chunk-XOCF2U54.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-6R76X2XV.js";
29
+ } from "./chunk-6JGQT4OH.js";
30
30
 
31
31
  // ../provider-openai/src/normalize.ts
32
32
  import OpenAI from "openai";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-535S4WXN.js";
3
+ } from "./chunk-3ZF3T3OG.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-D33TZL7S.js";
7
+ } from "./chunk-6RI7JFFI.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-X4GNC6AB.js");
31
+ const { createClient, projects, queries: queriesTable } = await import("./src-WDWTA7ON.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-7SCK3TEE.js");
50
+ const { serveCommand } = await import("./serve-GSPGAHMD.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -9,14 +9,14 @@ import {
9
9
  normalizeCloudflareWorkerEvent,
10
10
  sessionizeJourneyRequests,
11
11
  verifyRequestSignature
12
- } from "./chunk-ROCSYWLF.js";
12
+ } from "./chunk-CNSLBHFP.js";
13
13
  import {
14
14
  currentOutcomeAttribution,
15
15
  getRequestContext,
16
16
  registerRequestContext,
17
17
  requestAuditIdentity,
18
18
  sanitizeRequestContext
19
- } from "./chunk-FLCTZSLI.js";
19
+ } from "./chunk-KDV5NQZH.js";
20
20
  import {
21
21
  SentimentIdempotencyConflict,
22
22
  SentimentRepository,
@@ -156,7 +156,7 @@ import {
156
156
  userSessions,
157
157
  users,
158
158
  writeNegativeReviewMaxStars
159
- } from "./chunk-QZUEQP5G.js";
159
+ } from "./chunk-XOCF2U54.js";
160
160
  import {
161
161
  ADS_ACTIVATE_SCOPE,
162
162
  ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
@@ -234,6 +234,8 @@ import {
234
234
  DiscoveryCompetitorTypes,
235
235
  DiscoveryPromoteCompetitorSkipReasons,
236
236
  DiscoverySessionStatuses,
237
+ EMBED_QUERIES_WRITE_SCOPE,
238
+ EMBED_QUERY_LIMIT_HEADER,
237
239
  FeatureNames,
238
240
  GA4_AI_ASSISTANT_CHANNEL_GROUP,
239
241
  GA_OVERVIEW_HISTORY_DAYS,
@@ -609,6 +611,7 @@ import {
609
611
  domainClassificationsResponseDtoSchema,
610
612
  effectiveBrandNames,
611
613
  effectiveDomains,
614
+ embedQueryLimitReached,
612
615
  emptyCitationVisibility,
613
616
  emptySentimentCounts,
614
617
  escapeLikePattern,
@@ -925,6 +928,7 @@ import {
925
928
  organicEvidenceDtoSchema,
926
929
  outcomeSurfaceSchema,
927
930
  parseBoundedRate,
931
+ parseEmbedQueryLimit,
928
932
  parseInclusiveEndMs,
929
933
  parseMeasurementDraftEtagVersion,
930
934
  parseMeasurementRunManifestV1,
@@ -1188,7 +1192,7 @@ import {
1188
1192
  wordpressSchemaDeployResultDtoSchema,
1189
1193
  wordpressSchemaStatusResultDtoSchema,
1190
1194
  wordpressStatusDtoSchema
1191
- } from "./chunk-6R76X2XV.js";
1195
+ } from "./chunk-6JGQT4OH.js";
1192
1196
 
1193
1197
  // ../api-routes/src/user-session.ts
1194
1198
  import crypto2 from "crypto";
@@ -6285,17 +6289,25 @@ function isTechnicalAeoRead(request, url) {
6285
6289
  }
6286
6290
  return rest === "technical-aeo" || rest === "technical-aeo/pages" || rest === "technical-aeo/trend" || rest === "technical-aeo/crawl" || rest === "technical-aeo/graph" || rest === "technical-aeo/subgraph" || rest === "technical-aeo/path" || rest === "technical-aeo/changes" || rest === "technical-aeo/crawl/pages/audit" || rest === "technical-aeo/crawl/pages" || rest === "technical-aeo/runs" || rest === "technical-aeo/structure" || rest === "technical-aeo/internal-links" || rest === "technical-aeo/internal-links/neighbors" || rest === "technical-aeo/dead-links";
6287
6291
  }
6292
+ function isEmbedQueryWrite(request) {
6293
+ return request.routeOptions.config.writeScope === EMBED_QUERIES_WRITE_SCOPE && (principalScopes(request) ?? []).includes(EMBED_QUERIES_WRITE_SCOPE);
6294
+ }
6295
+ function isEmbedQueryRead(request, url) {
6296
+ if (parseEmbedQueryLimit(request.headers[EMBED_QUERY_LIMIT_HEADER]) === void 0) return false;
6297
+ return projectRouteRest(url) === "query-tracking";
6298
+ }
6288
6299
  function enforceEmbedProjectTabs(request, configuredTabs) {
6289
6300
  const policy = requestEmbedProjectTabs(request, configuredTabs);
6290
6301
  if (policy === void 0) return;
6291
6302
  if (request.method === "OPTIONS") return;
6292
6303
  const { tabs } = policy;
6293
- if (policy.fromEmbedSurface && WRITE_METHODS2.has(request.method)) {
6304
+ if (policy.fromEmbedSurface && WRITE_METHODS2.has(request.method) && !isEmbedQueryWrite(request)) {
6294
6305
  throw forbidden("This endpoint is not available in embed mode.");
6295
6306
  }
6296
6307
  if (WRITE_METHODS2.has(request.method)) return;
6297
6308
  const url = request.url.split("?")[0];
6298
6309
  if (isProjectShellRead(request, url)) return;
6310
+ if (isEmbedQueryRead(request, url)) return;
6299
6311
  if (tabs.includes("overview") && isOverviewRead(url)) return;
6300
6312
  if (tabs.includes("technical-aeo") && isTechnicalAeoRead(request, url)) return;
6301
6313
  throw forbidden("This endpoint is not available for the configured embed tabs.");
@@ -24929,6 +24941,31 @@ function readVisibilityComparisonRuns(db, projectId, since, until, includeEviden
24929
24941
  // ../api-routes/src/query-tracking.ts
24930
24942
  import crypto24 from "crypto";
24931
24943
  import { and as and33, desc as desc17, eq as eq41, inArray as inArray22, isNotNull as isNotNull5, isNull as isNull8, ne as ne8 } from "drizzle-orm";
24944
+
24945
+ // ../api-routes/src/embed-queries.ts
24946
+ function embedQueryWriteLimit(request) {
24947
+ const principal = request.principal;
24948
+ const scopes = principal?.scopes ?? request.apiKey?.scopes ?? [];
24949
+ if (!scopes.includes(EMBED_QUERIES_WRITE_SCOPE)) return void 0;
24950
+ if (scopes.includes(WILDCARD_SCOPE) || scopes.includes(MEASUREMENT_PLAN_WRITE_SCOPE)) return void 0;
24951
+ const projectId = principal?.kind === "api-key" ? principal.projectId : request.apiKey?.projectId;
24952
+ if (!projectId) throw forbidden("An embedded query key must be scoped to one project.");
24953
+ const limit = parseEmbedQueryLimit(request.headers[EMBED_QUERY_LIMIT_HEADER]);
24954
+ if (limit === void 0) throw forbidden("An embedded query change needs the dashboard query limit.");
24955
+ return limit;
24956
+ }
24957
+ function assertEmbedQueryChange(mutation) {
24958
+ const plain = mutation.additions.length + mutation.removals.length === 1 && (mutation.edits ?? []).length === 0 && mutation.additions.every((addition) => addition.input.source === "manual" && addition.audience === void 0 && addition.contexts === void 0 && addition.queryClass === void 0) && mutation.removals.every((removal) => removal.queryId !== void 0 && removal.audience === void 0);
24959
+ if (!plain) throw forbidden("An embedded dashboard can add or remove one query at a time.");
24960
+ }
24961
+ function assertEmbedQueryWorkspace(mode) {
24962
+ if (mode !== "simple") throw forbidden("Your agency manages the queries for this project.");
24963
+ }
24964
+ function assertWithinEmbedQueryLimit(before, after, limit) {
24965
+ if (after > limit && after > before) throw embedQueryLimitReached(limit, after);
24966
+ }
24967
+
24968
+ // ../api-routes/src/query-tracking.ts
24932
24969
  var SOURCE_LIMIT = 100;
24933
24970
  var MAX_REVIEW_AGE_MS = 15 * 60 * 1e3;
24934
24971
  var MAX_REVIEW_FUTURE_SKEW_MS = 60 * 1e3;
@@ -26345,17 +26382,21 @@ async function queryTrackingRoutes(app, opts = {}) {
26345
26382
  const project = resolveProject(app.db, request.params.name);
26346
26383
  return workspaceDto(app.db, readWorkspace(app.db, project), opts);
26347
26384
  });
26348
- app.post("/projects/:name/query-tracking/preview", async (request) => {
26349
- requireScope(request, MEASUREMENT_PLAN_WRITE_SCOPE);
26385
+ app.post("/projects/:name/query-tracking/preview", { config: { writeScope: EMBED_QUERIES_WRITE_SCOPE } }, async (request) => {
26386
+ const embedLimit = embedQueryWriteLimit(request);
26387
+ if (embedLimit === void 0) requireScope(request, MEASUREMENT_PLAN_WRITE_SCOPE);
26350
26388
  const parsed = queryTrackingPreviewRequestSchema.safeParse(request.body);
26351
26389
  if (!parsed.success) throw validationError("Invalid query tracking preview payload", { issues: parsed.error.issues });
26390
+ if (embedLimit !== void 0) assertEmbedQueryChange(parsed.data);
26352
26391
  const project = resolveProject(app.db, request.params.name);
26353
26392
  const state = readWorkspace(app.db, project);
26393
+ if (embedLimit !== void 0) assertEmbedQueryWorkspace(state.mode);
26354
26394
  if (parsed.data.expectedWorkspaceVersion !== state.workspaceVersion) {
26355
26395
  throw queryTrackingPreviewStale(parsed.data.expectedWorkspaceVersion, state.workspaceVersion);
26356
26396
  }
26357
26397
  const reviewedAt = (/* @__PURE__ */ new Date()).toISOString();
26358
26398
  const candidate = buildCandidate(app.db, state, parsed.data, opts, reviewedAt);
26399
+ if (embedLimit !== void 0) assertWithinEmbedQueryLimit(state.queryRows.length, candidate.queryRows.size, embedLimit);
26359
26400
  return queryTrackingPreviewResponseSchema.parse({
26360
26401
  mode: state.mode,
26361
26402
  workspaceVersion: state.workspaceVersion,
@@ -26367,10 +26408,12 @@ async function queryTrackingRoutes(app, opts = {}) {
26367
26408
  workload: candidate.workload
26368
26409
  });
26369
26410
  });
26370
- app.post("/projects/:name/query-tracking/commit", async (request, reply) => {
26371
- requireScope(request, MEASUREMENT_PLAN_WRITE_SCOPE);
26411
+ app.post("/projects/:name/query-tracking/commit", { config: { writeScope: EMBED_QUERIES_WRITE_SCOPE } }, async (request, reply) => {
26412
+ const embedLimit = embedQueryWriteLimit(request);
26413
+ if (embedLimit === void 0) requireScope(request, MEASUREMENT_PLAN_WRITE_SCOPE);
26372
26414
  const parsed = queryTrackingCommitRequestSchema.safeParse(request.body);
26373
26415
  if (!parsed.success) throw validationError("Invalid query tracking commit payload", { issues: parsed.error.issues });
26416
+ if (embedLimit !== void 0) assertEmbedQueryChange(parsed.data);
26374
26417
  const project = resolveProject(app.db, request.params.name);
26375
26418
  const lookup = { operation: "query-tracking.commit", key: parsed.data.previewToken, checksum: requestChecksum(parsed.data) };
26376
26419
  const replay = replayReceipt(app.db, project.id, lookup, reply);
@@ -26382,6 +26425,7 @@ async function queryTrackingRoutes(app, opts = {}) {
26382
26425
  const currentProject = tx.select().from(projects).where(eq41(projects.id, project.id)).get();
26383
26426
  if (!currentProject) throw notFound("Project", project.name);
26384
26427
  const state = readWorkspace(tx, currentProject);
26428
+ if (embedLimit !== void 0) assertEmbedQueryWorkspace(state.mode);
26385
26429
  if (parsed.data.expectedWorkspaceVersion !== state.workspaceVersion) {
26386
26430
  throw queryTrackingPreviewStale(parsed.data.expectedWorkspaceVersion, state.workspaceVersion);
26387
26431
  }
@@ -26389,6 +26433,7 @@ async function queryTrackingRoutes(app, opts = {}) {
26389
26433
  if (parsed.data.previewToken !== mutationPreviewToken(candidate, parsed.data, reviewedAt)) {
26390
26434
  throw queryTrackingPreviewStale(parsed.data.expectedWorkspaceVersion, state.workspaceVersion);
26391
26435
  }
26436
+ if (embedLimit !== void 0) assertWithinEmbedQueryLimit(state.queryRows.length, candidate.queryRows.size, embedLimit);
26392
26437
  if (!candidate.diff.noOp && !rowsEqual(new Map(state.queryRows.map((row) => [row.id, row])), candidate.queryRows)) {
26393
26438
  assertNoActivePlanlessSweep(tx, { projectId: project.id, projectName: project.name });
26394
26439
  }
@@ -26401,7 +26446,12 @@ async function queryTrackingRoutes(app, opts = {}) {
26401
26446
  actor: "api",
26402
26447
  action: "query-tracking.updated",
26403
26448
  entityType: "query",
26404
- diff: { added: candidate.diff.added.length, removed: candidate.diff.removed.length, reused: candidate.diff.reused.length }
26449
+ diff: {
26450
+ added: candidate.diff.added.length,
26451
+ removed: candidate.diff.removed.length,
26452
+ reused: candidate.diff.reused.length,
26453
+ ...embedLimit !== void 0 ? { via: "embed" } : {}
26454
+ }
26405
26455
  }));
26406
26456
  active = null;
26407
26457
  } else if (!candidate.diff.noOp) {
@@ -15,7 +15,7 @@ import {
15
15
  formatCanonryPluginUpdateHint,
16
16
  formatCanonryPluginVersionMismatch,
17
17
  skillsClientSchema
18
- } from "./chunk-6R76X2XV.js";
18
+ } from "./chunk-6JGQT4OH.js";
19
19
 
20
20
  // src/commands/skills.ts
21
21
  import crypto from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-6R76X2XV.js";
4
+ } from "./chunk-6JGQT4OH.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-4Q64QWKU.js";
3
+ } from "./chunk-3LTLLHCD.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-HF7ONR3Z.js";
6
+ } from "./chunk-RVEXUQHP.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-4PDSDRB2.js";
6
+ } from "./chunk-PJYXLC3D.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-6R76X2XV.js";
17
+ } from "./chunk-6JGQT4OH.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-U5ZXWV7J.js");
114
+ const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-ZBTUYNJA.js");
115
115
  const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
116
116
  printCliCatalog2(specs, fallbackFormat, group2, accessValue);
117
117
  return true;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-CUR2SI66.js";
3
+ } from "./chunk-BGTJTKOJ.js";
4
4
  import {
5
5
  emitJsonl
6
6
  } from "./chunk-Z7IUAJOF.js";
@@ -19,7 +19,7 @@ import {
19
19
  formatMicros,
20
20
  formatRunErrorOneLine,
21
21
  resolveProviderInput
22
- } from "./chunk-6R76X2XV.js";
22
+ } from "./chunk-6JGQT4OH.js";
23
23
 
24
24
  // src/commands/run.ts
25
25
  function getClient() {
@@ -6,12 +6,12 @@ import {
6
6
  import {
7
7
  createApiClient,
8
8
  runWithUsageTags
9
- } from "./chunk-CUR2SI66.js";
9
+ } from "./chunk-BGTJTKOJ.js";
10
10
  import {
11
11
  canonryMcpTools,
12
12
  mcpOutputSchema,
13
13
  toolOperationAccess
14
- } from "./chunk-4KVUUBKF.js";
14
+ } from "./chunk-QNSMMQJY.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-6R76X2XV.js";
27
+ } from "./chunk-6JGQT4OH.js";
28
28
 
29
29
  // src/mcp/server.ts
30
30
  import { randomUUID } from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  AppError,
6
6
  parseWindowIn,
7
7
  resolveDateRange
8
- } from "./chunk-6R76X2XV.js";
8
+ } from "./chunk-6JGQT4OH.js";
9
9
 
10
10
  // src/cli-access.ts
11
11
  var CLI_ACCESS_BY_ID = Object.freeze({
@@ -7,27 +7,27 @@ import {
7
7
  reparseStoredResult4,
8
8
  reparseStoredResult5,
9
9
  resolveStoredApiResponse
10
- } from "./chunk-35XANOXF.js";
10
+ } from "./chunk-EIRIZPR6.js";
11
11
  import {
12
12
  loadConfig
13
- } from "./chunk-D33TZL7S.js";
13
+ } from "./chunk-6RI7JFFI.js";
14
14
  import {
15
15
  isMachineFormat
16
16
  } from "./chunk-HGMYEDAQ.js";
17
17
  import {
18
18
  determineCitationState
19
- } from "./chunk-R5YKG2YP.js";
19
+ } from "./chunk-R7RTWOOV.js";
20
20
  import {
21
21
  backfillProjectAnswerMentions,
22
22
  competitorIdentityColumns,
23
23
  createRunCompetitorResolver,
24
24
  readMarketCompetitorNames,
25
25
  refreshSnapshotMentionIdentity
26
- } from "./chunk-D4TXUHVA.js";
26
+ } from "./chunk-JGO7LGVN.js";
27
27
  import {
28
28
  classifyAiUserFetch,
29
29
  classifyCrawler
30
- } from "./chunk-ROCSYWLF.js";
30
+ } from "./chunk-CNSLBHFP.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-QZUEQP5G.js";
45
+ } from "./chunk-XOCF2U54.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-6R76X2XV.js";
62
+ } from "./chunk-6JGQT4OH.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-VUOMVRAD.js");
440
+ const { IntelligenceService } = await import("./intelligence-service-PAMFRLPE.js");
441
441
  const config = loadConfig();
442
442
  const db = createClient(config.database);
443
443
  migrate(db);
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-TPZ6RLGX.js";
5
+ } from "./chunk-CSDDKEL6.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-5TCY7FYS.js";
9
+ } from "./chunk-ULUKHNE4.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-6R76X2XV.js";
180
+ } from "./chunk-6JGQT4OH.js";
181
181
 
182
182
  // src/mcp/tool-registry.ts
183
183
  import { z as z2 } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-6R76X2XV.js";
3
+ } from "./chunk-6JGQT4OH.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -2,18 +2,18 @@ import {
2
2
  configExists,
3
3
  loadConfigRaw,
4
4
  saveConfigPatch
5
- } from "./chunk-D33TZL7S.js";
5
+ } from "./chunk-6RI7JFFI.js";
6
6
  import {
7
7
  BUNDLED_SKILL_NAMES,
8
8
  installSkills
9
- } from "./chunk-MDJG5NPR.js";
9
+ } from "./chunk-JNRMODJS.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-6R76X2XV.js";
16
+ } from "./chunk-6JGQT4OH.js";
17
17
 
18
18
  // src/skills-autosync.ts
19
19
  import fs from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cloudflareQueueNameSchema
3
- } from "./chunk-6R76X2XV.js";
3
+ } from "./chunk-6JGQT4OH.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-HGMYEDAQ.js";
9
9
  import {
10
10
  describeError
11
- } from "./chunk-6R76X2XV.js";
11
+ } from "./chunk-6JGQT4OH.js";
12
12
 
13
13
  // src/commands/mcp.ts
14
14
  import fs from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-D33TZL7S.js";
8
+ } from "./chunk-6RI7JFFI.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-6R76X2XV.js";
21
+ } from "./chunk-6JGQT4OH.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -28,7 +28,7 @@ import {
28
28
  unknownUsageObservation,
29
29
  usdToMicros,
30
30
  withRetry
31
- } from "./chunk-6R76X2XV.js";
31
+ } from "./chunk-6JGQT4OH.js";
32
32
 
33
33
  // ../provider-answer-services/src/core/http.ts
34
34
  var MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-CUR2SI66.js";
3
+ } from "./chunk-BGTJTKOJ.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-5TCY7FYS.js";
10
+ } from "./chunk-ULUKHNE4.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-6R76X2XV.js";
40
+ } from "./chunk-6JGQT4OH.js";
41
41
 
42
42
  // src/commands/measurement-plan.ts
43
43
  import crypto from "crypto";
@@ -23,7 +23,7 @@ import {
23
23
  measurementDraftUpsertGroupRequestSchema,
24
24
  measurementDraftUpsertMarketRequestSchema,
25
25
  measurementDraftUpsertTargetRequestSchema
26
- } from "./chunk-6R76X2XV.js";
26
+ } from "./chunk-6JGQT4OH.js";
27
27
 
28
28
  // src/measurement-draft-actions.ts
29
29
  import { z } from "zod";