@canonry/canonry 7.74.0 → 7.76.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 (131) hide show
  1. package/assets/assets/AgentSetupPage-Dy9_auot.js +18 -0
  2. package/assets/assets/{AuditHistoryPanel-yrgfS5B_.js → AuditHistoryPanel-BVTD5aDT.js} +1 -1
  3. package/assets/assets/{BacklinksPage-DJM6z03g.js → BacklinksPage-B3UasiLF.js} +1 -1
  4. package/assets/assets/{HistoryPage-CNvAVJ1S.js → HistoryPage-BeKtZ449.js} +1 -1
  5. package/assets/assets/{MeasurementPropertyPage-BVVYhOxR.js → MeasurementPropertyPage-Cm-jzeY8.js} +1 -1
  6. package/assets/assets/{ProjectPage-CPRD8kR9.js → ProjectPage-C3iapgWm.js} +1 -1
  7. package/assets/assets/{RunsPage-Ck33dcjz.js → RunsPage-bRhgxSV_.js} +1 -1
  8. package/assets/assets/{SettingsPage-CS_t4Dai.js → SettingsPage-fPEwb0Fh.js} +1 -1
  9. package/assets/assets/{SiteHealthSection-BurKnHpn.js → SiteHealthSection-Bk4zrPnb.js} +2 -2
  10. package/assets/assets/ToneBadge-DfEkyFHe.js +60 -0
  11. package/assets/assets/{TrafficPage-DAiY698E.js → TrafficPage-CzdZa-dz.js} +1 -1
  12. package/assets/assets/{TrafficSourceDetailPage-clJSX2rr.js → TrafficSourceDetailPage-B-7STzgQ.js} +1 -1
  13. package/assets/assets/{account-context-DDEhuoP2.js → account-context-C0wMdIfs.js} +1 -1
  14. package/assets/assets/{card-DbR-lBY3.js → card-CdfP76v-.js} +1 -1
  15. package/assets/assets/{extract-error-message-7_Vm2DQF.js → extract-error-message-D36I9Bna.js} +1 -1
  16. package/assets/assets/{format-helpers-vtahpXTQ.js → format-helpers-Ja8nzHvN.js} +1 -1
  17. package/assets/assets/{index-BIhCeXvc.js → index-BWMizh5y.js} +4 -4
  18. package/assets/assets/{query-client-TlFXYJ9o.js → query-client-jOrIVlKd.js} +1 -1
  19. package/assets/assets/{react-query-C5Mv8xfD.js → react-query-BrM5m2wm.js} +1 -1
  20. package/assets/assets/{react-sigma_core.esm.min-DmggJ7YC.js → react-sigma_core.esm.min-D2wEGI_h.js} +1 -1
  21. package/assets/assets/{service-CLFURPuM.js → service-jrrtReGW.js} +1 -1
  22. package/assets/index.html +7 -7
  23. package/dist/{ads-L64W5J35.js → ads-WMVE7R43.js} +3 -3
  24. package/dist/{agent-CMQ34CFD.js → agent-VQDHMK4Z.js} +7 -7
  25. package/dist/{agent-ask-3KEYJSZV.js → agent-ask-BRMDRWBU.js} +3 -3
  26. package/dist/{agent-conversations-4KKPOTCP.js → agent-conversations-SIRYGIJM.js} +3 -3
  27. package/dist/{agent-memory-VOSRZ57W.js → agent-memory-2DDQQNJZ.js} +3 -3
  28. package/dist/{agent-providers-SLXTYMDS.js → agent-providers-ZNIQ7XUC.js} +3 -3
  29. package/dist/{agent-transcript-Q6OEZROG.js → agent-transcript-U2VKTBMV.js} +3 -3
  30. package/dist/{analytics-LSF6NYII.js → analytics-OJY5QWTM.js} +3 -3
  31. package/dist/{apply-7O3RES7N.js → apply-6IVQMJSS.js} +3 -3
  32. package/dist/{backfill-7ARSKYDG.js → backfill-NG6PZM7X.js} +9 -9
  33. package/dist/{backlinks-4YAC374B.js → backlinks-AZRCWJVJ.js} +3 -3
  34. package/dist/{bing-SHAYDXAA.js → bing-6K63LZIB.js} +3 -3
  35. package/dist/{bootstrap-BHLBGQKJ.js → bootstrap-NIFFJKIT.js} +10 -10
  36. package/dist/{cdp-QWJE6SFY.js → cdp-X73HVPAS.js} +7 -7
  37. package/dist/{chunk-HJHFW455.js → chunk-2BDWXHYF.js} +3 -3
  38. package/dist/{chunk-WY2C6FFA.js → chunk-2EXFCI5F.js} +8 -8
  39. package/dist/{chunk-DLVGMRM5.js → chunk-2WBT6TEJ.js} +1 -1
  40. package/dist/{chunk-6YW24AUN.js → chunk-46KV7CZU.js} +2 -2
  41. package/dist/{chunk-3WPTMLQI.js → chunk-4QHTXT4A.js} +3 -3
  42. package/dist/{chunk-TXUNPPWD.js → chunk-4ZXHTHUH.js} +36 -23
  43. package/dist/{chunk-MRSNLKSM.js → chunk-5QR7D4RQ.js} +1 -1
  44. package/dist/{chunk-KOWOQ3JZ.js → chunk-5W37PWV4.js} +2 -2
  45. package/dist/{chunk-EXGETCJR.js → chunk-6NUXSEW6.js} +3 -3
  46. package/dist/{chunk-YTSE2EZP.js → chunk-7KYGOR7N.js} +3 -3
  47. package/dist/{chunk-SCRPC2PQ.js → chunk-7LLDLEWJ.js} +4 -4
  48. package/dist/{chunk-HEL6DKDN.js → chunk-7UVCZZQJ.js} +1 -1
  49. package/dist/{chunk-ZMDIARSG.js → chunk-AIC4FUOD.js} +335 -335
  50. package/dist/{chunk-WLNYLQTX.js → chunk-BC56FPTQ.js} +6 -6
  51. package/dist/{chunk-6ATKY252.js → chunk-C3UFOS7J.js} +2 -2
  52. package/dist/{chunk-PAIYFNNY.js → chunk-D5XPB7MM.js} +1 -1
  53. package/dist/{chunk-AJMDETJA.js → chunk-DAOGINSR.js} +4 -4
  54. package/dist/{chunk-SF5JLMLG.js → chunk-FCGYYZHL.js} +5 -1
  55. package/dist/{chunk-LS47ZAX2.js → chunk-IZP4KKIJ.js} +4 -4
  56. package/dist/{chunk-GWDMWKM6.js → chunk-JPOIDGGF.js} +1 -1
  57. package/dist/{chunk-2Y6MSB4J.js → chunk-JSCO223C.js} +1 -1
  58. package/dist/{chunk-BICUWFV4.js → chunk-KXSNV6C3.js} +2 -2
  59. package/dist/{chunk-WLWOGBLJ.js → chunk-M7OLPSCA.js} +4 -4
  60. package/dist/{chunk-MB3IUJ6Z.js → chunk-MXRCOQT2.js} +3 -3
  61. package/dist/{chunk-5PA7SJ2M.js → chunk-OF6UW77Y.js} +5 -5
  62. package/dist/{chunk-DL3LTSBV.js → chunk-OT6SUK6X.js} +2 -2
  63. package/dist/{chunk-XDQJOZKJ.js → chunk-PSNTEGNY.js} +1 -1
  64. package/dist/{chunk-3YIKSZHN.js → chunk-RPJJOBKN.js} +1 -1
  65. package/dist/{chunk-QS6RIP37.js → chunk-TESDUMVK.js} +1 -1
  66. package/dist/{chunk-O4D66XPL.js → chunk-UWPCUAZM.js} +2 -2
  67. package/dist/{chunk-L5GIL45X.js → chunk-X2CE5IME.js} +2 -2
  68. package/dist/{chunk-JPM3VC6A.js → chunk-XYYWKCJQ.js} +1 -1
  69. package/dist/{chunk-AZQNJX3T.js → chunk-Z2FY6AGZ.js} +2 -2
  70. package/dist/{chunk-NXFNXXYM.js → chunk-ZWD4W3KU.js} +30 -3
  71. package/dist/{chunk-6W5AR4IW.js → chunk-ZXYCPRNY.js} +1 -1
  72. package/dist/{citations-EENLZULG.js → citations-XJUGQ736.js} +3 -3
  73. package/dist/{cli-catalog-BXHG544D.js → cli-catalog-ZVFLJXID.js} +3 -3
  74. package/dist/{cli-commands-7BG5M2KF.js → cli-commands-OZFEIIV6.js} +7 -7
  75. package/dist/cli.js +13 -13
  76. package/dist/{competitor-CW5LMXJ6.js → competitor-5OEWFXMU.js} +3 -3
  77. package/dist/{content-BX6UGRRU.js → content-TUWBGELB.js} +3 -3
  78. package/dist/{dashboard-M2TKT2LW.js → dashboard-P3DLDUTA.js} +6 -6
  79. package/dist/{demo-GKSMSKOY.js → demo-FSRCJINC.js} +1 -1
  80. package/dist/{demo-server-UQO4XKHN.js → demo-server-ROGIRBAR.js} +12 -12
  81. package/dist/{discover-2EZUZFNR.js → discover-WZUOPCBV.js} +3 -3
  82. package/dist/{discover-eval-IS2GRYVV.js → discover-eval-SICOH7ML.js} +3 -3
  83. package/dist/{doctor-DPEIBV3E.js → doctor-UMSTE4EO.js} +3 -3
  84. package/dist/{evidence-UGC4ZWNA.js → evidence-NLIQFQAK.js} +3 -3
  85. package/dist/{export-cmd-7OVM23C4.js → export-cmd-U2BFP7VV.js} +3 -3
  86. package/dist/{ga-FUADE4K4.js → ga-OCN3UUG2.js} +3 -3
  87. package/dist/{gbp-R4M663R5.js → gbp-B2YUDH7S.js} +3 -3
  88. package/dist/{google-WTOTC5SL.js → google-EOV6EXSF.js} +4 -4
  89. package/dist/{google-marketing-IXPMUBXZ.js → google-marketing-XPE6CVQI.js} +1 -1
  90. package/dist/{health-cmd-QKDO6VIT.js → health-cmd-UVJAXG5V.js} +3 -3
  91. package/dist/{history-LEBTYXVW.js → history-4NOM3SFC.js} +3 -3
  92. package/dist/index.d.ts +81 -65
  93. package/dist/index.js +25 -25
  94. package/dist/{init-BKOT4UY2.js → init-V2W3KRGA.js} +12 -12
  95. package/dist/{insights-OBHQ5GHV.js → insights-W2A4O4CO.js} +3 -3
  96. package/dist/intelligence-service-G6NCD4JJ.js +16 -0
  97. package/dist/{journeys-PTMCJHOL.js → journeys-IPOEIDVQ.js} +3 -3
  98. package/dist/{keys-W2FZNFOR.js → keys-QK5N2Y46.js} +3 -3
  99. package/dist/{keyword-Y6WABJPU.js → keyword-JMDOXJ54.js} +3 -3
  100. package/dist/{logs-KRSH53GN.js → logs-YVSSVMC7.js} +3 -3
  101. package/dist/{mcp-6LJW6LEJ.js → mcp-YEGPIJ6N.js} +4 -4
  102. package/dist/mcp.js +9 -9
  103. package/dist/{measurement-plan-RHLKXNYG.js → measurement-plan-WS44DI53.js} +5 -5
  104. package/dist/{notify-HRK2HQTU.js → notify-HQRSMWG2.js} +3 -3
  105. package/dist/{organic-evidence-EX2VL5CE.js → organic-evidence-OKXXS7FH.js} +3 -3
  106. package/dist/{overview-254QNXAC.js → overview-6OZ5NFAO.js} +4 -4
  107. package/dist/{project-UOYX7T4J.js → project-XCZJDR4E.js} +3 -3
  108. package/dist/{query-JMVOMNRS.js → query-MCSEFKKF.js} +3 -3
  109. package/dist/{research-PAPX7KO5.js → research-TM3HHQDB.js} +3 -3
  110. package/dist/{results-export-3BXIIDP2.js → results-export-C4GFWJ7Y.js} +3 -3
  111. package/dist/{run-WQXLV4MS.js → run-JJE45UIV.js} +4 -4
  112. package/dist/{schedule-3WJ5F3BF.js → schedule-BPFQPTRI.js} +3 -3
  113. package/dist/{search-RVGFOZAT.js → search-YDU2L2R4.js} +3 -3
  114. package/dist/{serve-BPM2P3GY.js → serve-ZH36XF5Y.js} +26 -26
  115. package/dist/{session-76DT5W6D.js → session-QIN3JK6L.js} +13 -13
  116. package/dist/{settings-MRJ566D6.js → settings-3YQ7EBL4.js} +3 -3
  117. package/dist/{skills-F6AXQHTO.js → skills-CYHWYN42.js} +2 -2
  118. package/dist/{snapshot-7GBDFFVB.js → snapshot-LMM4QTUF.js} +3 -3
  119. package/dist/{src-52USCS7O.js → src-SXB3MOP3.js} +2 -2
  120. package/dist/{status-S6CZV2LU.js → status-6M7TVQ5U.js} +7 -5
  121. package/dist/{technical-aeo-Q73ZF2FD.js → technical-aeo-UI774MQF.js} +3 -3
  122. package/dist/{telemetry-BT4OOPN6.js → telemetry-XJGPXSUI.js} +4 -4
  123. package/dist/{tools-HYOV77FY.js → tools-POBUM7P7.js} +11 -11
  124. package/dist/{traffic-EFLF62IZ.js → traffic-5ETOEJNG.js} +5 -5
  125. package/dist/{users-MYXGNUIZ.js → users-LOPUV244.js} +3 -3
  126. package/dist/{visibility-stats-QENASZW6.js → visibility-stats-ECOEPNTG.js} +3 -3
  127. package/dist/{wordpress-CYLQHE5L.js → wordpress-DCS3VB6D.js} +3 -3
  128. package/package.json +1 -1
  129. package/assets/assets/AgentSetupPage-D7YVdPWO.js +0 -17
  130. package/assets/assets/ToneBadge-Df8oiKsQ.js +0 -60
  131. package/dist/intelligence-service-EJQQNO65.js +0 -16
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-LS47ZAX2.js";
8
+ } from "./chunk-IZP4KKIJ.js";
9
9
  import {
10
10
  CANONRY_MCP_TOOLKITS
11
11
  } from "./chunk-NDTU7FGL.js";
@@ -22,18 +22,18 @@ import {
22
22
  resolveApiKeyFor,
23
23
  resolveModelForProvider,
24
24
  validateAgentProviderRegistry
25
- } from "./chunk-NXFNXXYM.js";
25
+ } from "./chunk-ZWD4W3KU.js";
26
26
  import {
27
27
  CanonryMcpToolNames,
28
28
  canonryMcpTools
29
- } from "./chunk-3WPTMLQI.js";
29
+ } from "./chunk-4QHTXT4A.js";
30
30
  import {
31
31
  createLogger
32
- } from "./chunk-AZQNJX3T.js";
32
+ } from "./chunk-Z2FY6AGZ.js";
33
33
  import {
34
34
  agentToolEvents,
35
35
  llmUsageEvents
36
- } from "./chunk-PAIYFNNY.js";
36
+ } from "./chunk-D5XPB7MM.js";
37
37
  import {
38
38
  MeasurementPortfolioLists,
39
39
  SeoCapabilities,
@@ -42,7 +42,7 @@ import {
42
42
  describeError,
43
43
  validationError,
44
44
  visibilityReportRequestSchema
45
- } from "./chunk-SF5JLMLG.js";
45
+ } from "./chunk-FCGYYZHL.js";
46
46
 
47
47
  // src/agent/session.ts
48
48
  import fs3 from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseJsonColumn
3
- } from "./chunk-PAIYFNNY.js";
3
+ } from "./chunk-D5XPB7MM.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-SF5JLMLG.js";
29
+ } from "./chunk-FCGYYZHL.js";
30
30
 
31
31
  // ../provider-openai/src/normalize.ts
32
32
  import OpenAI from "openai";
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-SF5JLMLG.js";
23
+ } from "./chunk-FCGYYZHL.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-DLVGMRM5.js";
3
+ } from "./chunk-2WBT6TEJ.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-NXFNXXYM.js";
7
+ } from "./chunk-ZWD4W3KU.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-52USCS7O.js");
31
+ const { createClient, projects, queries: queriesTable } = await import("./src-SXB3MOP3.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-BPM2P3GY.js");
50
+ const { serveCommand } = await import("./serve-ZH36XF5Y.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -16982,8 +16982,12 @@ var hostedMcpUnavailableReasonSchema = z46.enum([
16982
16982
  "transport-unavailable"
16983
16983
  ]);
16984
16984
  var HostedMcpUnavailableReasons = hostedMcpUnavailableReasonSchema.enum;
16985
+ var mcpPluginConnectionSchema = z46.object({
16986
+ gatewayUrl: z46.string().url(),
16987
+ workspace: z46.string().min(1)
16988
+ });
16985
16989
  var hostedMcpHealthSchema = z46.discriminatedUnion("status", [
16986
- z46.object({ status: z46.literal(HostedMcpStatuses.ready), url: z46.string().url() }),
16990
+ z46.object({ status: z46.literal(HostedMcpStatuses.ready), url: z46.string().url(), plugin: mcpPluginConnectionSchema.optional() }),
16987
16991
  z46.object({ status: z46.literal(HostedMcpStatuses.unavailable), reason: hostedMcpUnavailableReasonSchema })
16988
16992
  ]);
16989
16993
  var mcpHealthSchema = z46.object({
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-BICUWFV4.js";
3
+ } from "./chunk-KXSNV6C3.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-3WPTMLQI.js";
7
+ } from "./chunk-4QHTXT4A.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-WLWOGBLJ.js";
13
+ } from "./chunk-M7OLPSCA.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-SF5JLMLG.js";
26
+ } from "./chunk-FCGYYZHL.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-SF5JLMLG.js";
4
+ } from "./chunk-FCGYYZHL.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-SF5JLMLG.js";
7
+ } from "./chunk-FCGYYZHL.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-NXFNXXYM.js";
3
+ } from "./chunk-ZWD4W3KU.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-SF5JLMLG.js";
39
+ } from "./chunk-FCGYYZHL.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -9,14 +9,14 @@ import {
9
9
  normalizeCloudflareWorkerEvent,
10
10
  sessionizeJourneyRequests,
11
11
  verifyRequestSignature
12
- } from "./chunk-QS6RIP37.js";
12
+ } from "./chunk-TESDUMVK.js";
13
13
  import {
14
14
  currentOutcomeAttribution,
15
15
  getRequestContext,
16
16
  registerRequestContext,
17
17
  requestAuditIdentity,
18
18
  sanitizeRequestContext
19
- } from "./chunk-GWDMWKM6.js";
19
+ } from "./chunk-JPOIDGGF.js";
20
20
  import {
21
21
  SentimentIdempotencyConflict,
22
22
  SentimentRepository,
@@ -157,7 +157,7 @@ import {
157
157
  userSessions,
158
158
  users,
159
159
  writeNegativeReviewMaxStars
160
- } from "./chunk-PAIYFNNY.js";
160
+ } from "./chunk-D5XPB7MM.js";
161
161
  import {
162
162
  ADS_ACTIVATE_SCOPE,
163
163
  ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
@@ -1196,7 +1196,7 @@ import {
1196
1196
  wordpressSchemaDeployResultDtoSchema,
1197
1197
  wordpressSchemaStatusResultDtoSchema,
1198
1198
  wordpressStatusDtoSchema
1199
- } from "./chunk-SF5JLMLG.js";
1199
+ } from "./chunk-FCGYYZHL.js";
1200
1200
 
1201
1201
  // ../api-routes/src/user-session.ts
1202
1202
  import crypto2 from "crypto";
@@ -6,12 +6,12 @@ import {
6
6
  import {
7
7
  createApiClient,
8
8
  runWithUsageTags
9
- } from "./chunk-BICUWFV4.js";
9
+ } from "./chunk-KXSNV6C3.js";
10
10
  import {
11
11
  canonryMcpTools,
12
12
  mcpOutputSchema,
13
13
  toolOperationAccess
14
- } from "./chunk-3WPTMLQI.js";
14
+ } from "./chunk-4QHTXT4A.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-SF5JLMLG.js";
27
+ } from "./chunk-FCGYYZHL.js";
28
28
 
29
29
  // src/mcp/server.ts
30
30
  import { randomUUID } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-AZQNJX3T.js";
3
+ } from "./chunk-Z2FY6AGZ.js";
4
4
  import {
5
5
  pickProjectCitedDomain
6
- } from "./chunk-JPM3VC6A.js";
6
+ } from "./chunk-XYYWKCJQ.js";
7
7
  import {
8
8
  GBP_INSIGHT_PROVIDER,
9
9
  PERSISTENT_GAP_THRESHOLD,
@@ -17,7 +17,7 @@ import {
17
17
  mergeGscQueryTotalsWithFallback,
18
18
  readGscQueryDailyRows,
19
19
  readLatestGscDataDate
20
- } from "./chunk-WLWOGBLJ.js";
20
+ } from "./chunk-M7OLPSCA.js";
21
21
  import {
22
22
  competitors,
23
23
  gbpDailyMetrics,
@@ -35,14 +35,14 @@ import {
35
35
  queries,
36
36
  querySnapshots,
37
37
  runs
38
- } from "./chunk-PAIYFNNY.js";
38
+ } from "./chunk-D5XPB7MM.js";
39
39
  import {
40
40
  CitationStates,
41
41
  RunKinds,
42
42
  RunStatuses,
43
43
  RunTriggers,
44
44
  effectiveDomains
45
- } from "./chunk-SF5JLMLG.js";
45
+ } from "./chunk-FCGYYZHL.js";
46
46
 
47
47
  // src/intelligence-service.ts
48
48
  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-NXFNXXYM.js";
8
+ } from "./chunk-ZWD4W3KU.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-SF5JLMLG.js";
21
+ } from "./chunk-FCGYYZHL.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cloudflareQueueNameSchema
3
- } from "./chunk-SF5JLMLG.js";
3
+ } from "./chunk-FCGYYZHL.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -5,7 +5,7 @@ import {
5
5
  AppError,
6
6
  parseWindowIn,
7
7
  resolveDateRange
8
- } from "./chunk-SF5JLMLG.js";
8
+ } from "./chunk-FCGYYZHL.js";
9
9
 
10
10
  // src/cli-access.ts
11
11
  var CLI_ACCESS_BY_ID = Object.freeze({
@@ -8,7 +8,7 @@ import {
8
8
  classifyJourneyEntry,
9
9
  hostMatchesDomain,
10
10
  hostOf
11
- } from "./chunk-SF5JLMLG.js";
11
+ } from "./chunk-FCGYYZHL.js";
12
12
 
13
13
  // ../integration-traffic/src/ip-ranges/amazonbot.json
14
14
  var amazonbot_default = {
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-VJWDBFSL.js";
5
5
  import {
6
6
  createApiClient
7
- } from "./chunk-BICUWFV4.js";
7
+ } from "./chunk-KXSNV6C3.js";
8
8
  import {
9
9
  CliError,
10
10
  isMachineFormat
11
11
  } from "./chunk-HGMYEDAQ.js";
12
12
  import {
13
13
  describeError
14
- } from "./chunk-SF5JLMLG.js";
14
+ } from "./chunk-FCGYYZHL.js";
15
15
 
16
16
  // src/commands/mcp.ts
17
17
  import fs from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-BICUWFV4.js";
3
+ } from "./chunk-KXSNV6C3.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-SF5JLMLG.js";
22
+ } from "./chunk-FCGYYZHL.js";
23
23
 
24
24
  // src/commands/run.ts
25
25
  function getClient() {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-SF5JLMLG.js";
3
+ } from "./chunk-FCGYYZHL.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getRequestContext
3
- } from "./chunk-GWDMWKM6.js";
3
+ } from "./chunk-JPOIDGGF.js";
4
4
  import {
5
5
  diagnosticIdentity,
6
6
  redactLogString,
7
7
  redactLogValue
8
- } from "./chunk-SF5JLMLG.js";
8
+ } from "./chunk-FCGYYZHL.js";
9
9
 
10
10
  // ../api-routes/src/runtime-logger.ts
11
11
  import { format } from "util";
@@ -20,7 +20,7 @@ import {
20
20
  resolveProviderModel,
21
21
  schedulableRunKindSchema,
22
22
  sentimentEvaluatorProviderSchema
23
- } from "./chunk-SF5JLMLG.js";
23
+ } from "./chunk-FCGYYZHL.js";
24
24
 
25
25
  // ../config/src/index.ts
26
26
  import { z as z5 } from "zod";
@@ -105,9 +105,16 @@ var gatewayTenantSchema = z4.object({
105
105
  catalogVersion: z4.literal("canonry-readonly-v1"),
106
106
  upstreamClientId: nonempty.optional()
107
107
  }).strict();
108
+ var LOOPBACK_HOSTS = ["localhost", "127.0.0.1", "[::1]"];
108
109
  var clientSchema = z4.object({
109
110
  client_id: identifier,
110
111
  client_name: nonempty.max(200),
112
+ /**
113
+ * `native` is a CLI or desktop app that receives the code on a loopback port it
114
+ * picks per sign-in (RFC 8252 section 7.3). oidc-provider matches its loopback
115
+ * redirects on any port, so they are registered without one.
116
+ */
117
+ application_type: z4.enum(["web", "native"]).default("web"),
111
118
  redirect_uris: z4.array(z4.url()).min(1),
112
119
  token_endpoint_auth_method: z4.literal("none").default("none"),
113
120
  grant_types: z4.array(z4.enum(["authorization_code", "refresh_token"])).default(["authorization_code", "refresh_token"]),
@@ -129,7 +136,7 @@ var gatewayConfigSchema = z4.object({
129
136
  }).strict().superRefine((config, ctx) => {
130
137
  const checkTransport = (value, path2) => {
131
138
  const parsed = new URL(value);
132
- const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(parsed.hostname);
139
+ const loopback = LOOPBACK_HOSTS.includes(parsed.hostname);
133
140
  if (parsed.protocol !== "https:" && !(config.development && loopback && parsed.protocol === "http:")) {
134
141
  ctx.addIssue({ code: "custom", path: path2, message: "HTTPS is required except explicit development on loopback" });
135
142
  }
@@ -167,8 +174,11 @@ var gatewayConfigSchema = z4.object({
167
174
  if (clientIds.has(client.client_id)) ctx.addIssue({ code: "custom", path: ["clients", index, "client_id"], message: "Client IDs must be unique" });
168
175
  clientIds.add(client.client_id);
169
176
  client.redirect_uris.forEach((redirect, redirectIndex) => {
170
- checkTransport(redirect, ["clients", index, "redirect_uris", redirectIndex]);
171
177
  const parsed = new URL(redirect);
178
+ if (client.application_type === "web") checkTransport(redirect, ["clients", index, "redirect_uris", redirectIndex]);
179
+ else if (parsed.protocol !== "http:" || !LOOPBACK_HOSTS.includes(parsed.hostname) || parsed.port) {
180
+ ctx.addIssue({ code: "custom", path: ["clients", index, "redirect_uris", redirectIndex], message: "Native clients register loopback HTTP redirects without a port" });
181
+ }
172
182
  if (parsed.username || parsed.password || parsed.hash) {
173
183
  ctx.addIssue({ code: "custom", path: ["clients", index, "redirect_uris", redirectIndex], message: "Redirects cannot contain credentials or fragments" });
174
184
  }
@@ -186,6 +196,17 @@ var researchViewerDailyRunLimitSchema = z5.number().int().positive().nullish();
186
196
  var dashboardManagedRunKindsSchema = z5.array(schedulableRunKindSchema).nullish();
187
197
  var agentProviderSchema = agentProviderIdSchema.nullish();
188
198
  var agentModelSchema = z5.string().trim().min(1).nullish();
199
+ var mcpGatewayConfigSchema = z5.object({
200
+ url: z5.url().refine((value) => {
201
+ try {
202
+ const parsed = new URL(value);
203
+ return parsed.protocol === "https:" && !parsed.username && !parsed.password && !parsed.search && !parsed.hash;
204
+ } catch {
205
+ return false;
206
+ }
207
+ }),
208
+ workspace: z5.string().trim().min(1).max(253).nullish()
209
+ }).strict().nullish();
189
210
  function resolveOperatorApiKeyIds(source) {
190
211
  const raw = source.CANONRY_OPERATOR_KEY_IDS?.trim();
191
212
  if (!raw) return [];
@@ -1014,6 +1035,12 @@ Do not use "canonry init --force" for recovery. It replaces credentials without
1014
1035
  if (parsed.seo !== void 0 && !seoInstallConfigSchema.safeParse(parsed.seo).success) {
1015
1036
  throw new CliError({ code: "CONFIG_INVALID", message: `Invalid config at ${configPath}: seo requires an explicit funding mode, positive integer budget caps, and connection credentials.` });
1016
1037
  }
1038
+ if (!mcpGatewayConfigSchema.safeParse(parsed.mcpGateway).success) {
1039
+ throw new CliError({
1040
+ code: "CONFIG_INVALID",
1041
+ message: `Invalid config at ${configPath}: mcpGateway needs an HTTPS url without credentials, query or fragment, and an optional non-empty workspace.`
1042
+ });
1043
+ }
1017
1044
  if (!dashboardManagedSweepsSchema.safeParse(parsed.dashboard?.managedSweeps).success) {
1018
1045
  throw new CliError({
1019
1046
  code: "CONFIG_INVALID",
@@ -28,7 +28,7 @@ import {
28
28
  unknownUsageObservation,
29
29
  usdToMicros,
30
30
  withRetry
31
- } from "./chunk-SF5JLMLG.js";
31
+ } from "./chunk-FCGYYZHL.js";
32
32
 
33
33
  // ../provider-answer-services/src/core/http.ts
34
34
  var MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-BICUWFV4.js";
4
- import "./chunk-NXFNXXYM.js";
3
+ } from "./chunk-KXSNV6C3.js";
4
+ import "./chunk-ZWD4W3KU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import "./chunk-HGMYEDAQ.js";
7
- import "./chunk-SF5JLMLG.js";
7
+ import "./chunk-FCGYYZHL.js";
8
8
  import "./chunk-MLKGABMK.js";
9
9
 
10
10
  // src/commands/citations.ts
@@ -3,11 +3,11 @@ import {
3
3
  buildCliCatalog,
4
4
  printCliCatalog,
5
5
  renderTopLevelHelp
6
- } from "./chunk-HJHFW455.js";
7
- import "./chunk-3YIKSZHN.js";
6
+ } from "./chunk-2BDWXHYF.js";
7
+ import "./chunk-RPJJOBKN.js";
8
8
  import "./chunk-Z7IUAJOF.js";
9
9
  import "./chunk-HGMYEDAQ.js";
10
- import "./chunk-SF5JLMLG.js";
10
+ import "./chunk-FCGYYZHL.js";
11
11
  import "./chunk-MLKGABMK.js";
12
12
  export {
13
13
  CLI_ROOT_SUMMARIES,
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  REGISTERED_CLI_COMMANDS
3
- } from "./chunk-ZMDIARSG.js";
3
+ } from "./chunk-AIC4FUOD.js";
4
4
  import "./chunk-6GO5VVAC.js";
5
- import "./chunk-YTSE2EZP.js";
5
+ import "./chunk-7KYGOR7N.js";
6
6
  import "./chunk-VJWDBFSL.js";
7
7
  import "./chunk-TSENU4GG.js";
8
- import "./chunk-BICUWFV4.js";
9
- import "./chunk-NXFNXXYM.js";
10
- import "./chunk-3YIKSZHN.js";
8
+ import "./chunk-KXSNV6C3.js";
9
+ import "./chunk-ZWD4W3KU.js";
10
+ import "./chunk-RPJJOBKN.js";
11
11
  import "./chunk-Z7IUAJOF.js";
12
- import "./chunk-MRSNLKSM.js";
12
+ import "./chunk-5QR7D4RQ.js";
13
13
  import "./chunk-AOJU5LKX.js";
14
14
  import "./chunk-HGMYEDAQ.js";
15
- import "./chunk-SF5JLMLG.js";
15
+ import "./chunk-FCGYYZHL.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
  export {
18
18
  REGISTERED_CLI_COMMANDS
package/dist/cli.js CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node --import tsx
2
2
  import {
3
3
  REGISTERED_CLI_COMMANDS
4
- } from "./chunk-ZMDIARSG.js";
4
+ } from "./chunk-AIC4FUOD.js";
5
5
  import {
6
6
  buildSetupState,
7
7
  runPendingServeHandoff
8
- } from "./chunk-AJMDETJA.js";
8
+ } from "./chunk-DAOGINSR.js";
9
9
  import "./chunk-6GO5VVAC.js";
10
- import "./chunk-YTSE2EZP.js";
10
+ import "./chunk-7KYGOR7N.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
12
  import "./chunk-TSENU4GG.js";
13
- import "./chunk-DLVGMRM5.js";
13
+ import "./chunk-2WBT6TEJ.js";
14
14
  import {
15
15
  checkLatestVersionForCli,
16
16
  cliRuntimeContext,
@@ -24,24 +24,24 @@ import {
24
24
  showFirstRunNotice,
25
25
  trackCliCommandFinished,
26
26
  trackEvent
27
- } from "./chunk-DL3LTSBV.js";
27
+ } from "./chunk-OT6SUK6X.js";
28
28
  import {
29
29
  autoSyncSkills,
30
30
  formatAutoSyncNotice
31
- } from "./chunk-EXGETCJR.js";
32
- import "./chunk-BICUWFV4.js";
33
- import "./chunk-NXFNXXYM.js";
31
+ } from "./chunk-6NUXSEW6.js";
32
+ import "./chunk-KXSNV6C3.js";
33
+ import "./chunk-ZWD4W3KU.js";
34
34
  import {
35
35
  accessFilterFromArgs,
36
36
  dispatchRegisteredCommand,
37
37
  printCliCatalog
38
- } from "./chunk-HJHFW455.js";
38
+ } from "./chunk-2BDWXHYF.js";
39
39
  import {
40
40
  resolveCliAccess
41
- } from "./chunk-3YIKSZHN.js";
41
+ } from "./chunk-RPJJOBKN.js";
42
42
  import "./chunk-Z7IUAJOF.js";
43
- import "./chunk-HEL6DKDN.js";
44
- import "./chunk-MRSNLKSM.js";
43
+ import "./chunk-7UVCZZQJ.js";
44
+ import "./chunk-5QR7D4RQ.js";
45
45
  import "./chunk-AOJU5LKX.js";
46
46
  import {
47
47
  CliError,
@@ -52,7 +52,7 @@ import {
52
52
  } from "./chunk-HGMYEDAQ.js";
53
53
  import {
54
54
  OperationAccesses
55
- } from "./chunk-SF5JLMLG.js";
55
+ } from "./chunk-FCGYYZHL.js";
56
56
  import "./chunk-MLKGABMK.js";
57
57
 
58
58
  // src/cli.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-BICUWFV4.js";
4
- import "./chunk-NXFNXXYM.js";
3
+ } from "./chunk-KXSNV6C3.js";
4
+ import "./chunk-ZWD4W3KU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -21,7 +21,7 @@ import {
21
21
  normalizeCompetitorDomain,
22
22
  shareOfVoiceLabel,
23
23
  shareOfVoiceReason
24
- } from "./chunk-SF5JLMLG.js";
24
+ } from "./chunk-FCGYYZHL.js";
25
25
  import "./chunk-MLKGABMK.js";
26
26
 
27
27
  // src/commands/competitor.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-BICUWFV4.js";
4
- import "./chunk-NXFNXXYM.js";
3
+ } from "./chunk-KXSNV6C3.js";
4
+ import "./chunk-ZWD4W3KU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  contentTargetDismissRequestSchema,
16
16
  formatPercent
17
- } from "./chunk-SF5JLMLG.js";
17
+ } from "./chunk-FCGYYZHL.js";
18
18
  import "./chunk-MLKGABMK.js";
19
19
 
20
20
  // src/commands/content.ts
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  clearDashboardPassword,
3
3
  loadConfigRaw
4
- } from "./chunk-NXFNXXYM.js";
4
+ } from "./chunk-ZWD4W3KU.js";
5
5
  import {
6
6
  isMachineFormat
7
7
  } from "./chunk-HGMYEDAQ.js";
8
8
  import {
9
9
  anyUsersExist
10
- } from "./chunk-WLWOGBLJ.js";
11
- import "./chunk-QS6RIP37.js";
12
- import "./chunk-GWDMWKM6.js";
10
+ } from "./chunk-M7OLPSCA.js";
11
+ import "./chunk-TESDUMVK.js";
12
+ import "./chunk-JPOIDGGF.js";
13
13
  import {
14
14
  createClient
15
- } from "./chunk-PAIYFNNY.js";
16
- import "./chunk-SF5JLMLG.js";
15
+ } from "./chunk-D5XPB7MM.js";
16
+ import "./chunk-FCGYYZHL.js";
17
17
  import "./chunk-MLKGABMK.js";
18
18
 
19
19
  // src/commands/dashboard.ts