@canonry/canonry 5.21.0 → 5.22.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 (30) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
  2. package/assets/assets/{AuditHistoryPanel-CjxWA3lx.js → AuditHistoryPanel-teTDC-4-.js} +1 -1
  3. package/assets/assets/{BacklinksPage-Bdd164Up.js → BacklinksPage-Bqm7bido.js} +1 -1
  4. package/assets/assets/{HistoryPage-BvJmE-kP.js → HistoryPage-IcqwPBmt.js} +1 -1
  5. package/assets/assets/{MeasurementPropertyPage-HuP6RMZ-.js → MeasurementPropertyPage-BLpptT3_.js} +1 -1
  6. package/assets/assets/{ProjectPage-DOvXVbyy.js → ProjectPage-nn2Y9H-m.js} +1 -1
  7. package/assets/assets/{RunRow-Cnb3JOBw.js → RunRow-S_SCHr0o.js} +1 -1
  8. package/assets/assets/{RunsPage-Dvz1JYIm.js → RunsPage-DFiif626.js} +1 -1
  9. package/assets/assets/{SettingsPage-DYGvphkg.js → SettingsPage-CitZ6FAS.js} +1 -1
  10. package/assets/assets/{SiteHealthSection-CUNiKaod.js → SiteHealthSection-C2dsyNGY.js} +3 -3
  11. package/assets/assets/{TrafficPage-Bf4Tq95q.js → TrafficPage-lY8na5Pg.js} +1 -1
  12. package/assets/assets/{TrafficSourceDetailPage-CIuLWZgT.js → TrafficSourceDetailPage-BTykoVGT.js} +1 -1
  13. package/assets/assets/{extract-error-message-DZex1e4H.js → extract-error-message-r0Gpc7mv.js} +1 -1
  14. package/assets/assets/{index-CeXW-lzj.js → index-DwlO8KfE.js} +20 -20
  15. package/assets/assets/{react-sigma_core.esm.min-CxvtwEkv.js → react-sigma_core.esm.min-DDrDxbO1.js} +1 -1
  16. package/assets/assets/{v2-overview-adapter-Bh4qIzLp.js → v2-overview-adapter-OsQiglXU.js} +1 -1
  17. package/assets/index.html +1 -1
  18. package/dist/{chunk-HDJHQPW3.js → chunk-3LCR6WU6.js} +2 -2
  19. package/dist/{chunk-WUT3G2GM.js → chunk-DDL2XSNM.js} +4 -2
  20. package/dist/{chunk-FRWZWJB3.js → chunk-GLLY2GEV.js} +6 -3
  21. package/dist/{chunk-FAVYLZQV.js → chunk-P5VXVFQW.js} +845 -445
  22. package/dist/{chunk-2LO7FLVD.js → chunk-S5OSY3PI.js} +30 -0
  23. package/dist/{chunk-NFN5GSEJ.js → chunk-XFHXKLNT.js} +23 -12
  24. package/dist/{chunk-MEAKE5W7.js → chunk-YTSXQUJ3.js} +3 -3
  25. package/dist/cli.js +15 -12
  26. package/dist/{demo-server-7BVVVXPM.js → demo-server-HULNEORN.js} +4 -4
  27. package/dist/index.js +6 -6
  28. package/dist/{intelligence-service-3UUKRAZ5.js → intelligence-service-CXNBKRHV.js} +2 -2
  29. package/dist/mcp.js +4 -4
  30. package/package.json +11 -11
@@ -15051,12 +15051,27 @@ var checkCategorySchema = z50.enum([
15051
15051
  "agent"
15052
15052
  ]);
15053
15053
  var CheckCategories = checkCategorySchema.enum;
15054
+ var checkNotificationPolicySchema = z50.enum(["health", "silent"]);
15055
+ var CheckNotificationPolicies = checkNotificationPolicySchema.enum;
15056
+ var reportMonthSchema = z50.string().regex(/^[1-9]\d{3}-(0[1-9]|1[0-2])$/, "Expected YYYY-MM");
15057
+ function reportMonthsForDoctor(reportMonth, now = /* @__PURE__ */ new Date()) {
15058
+ if (reportMonth !== void 0) return [reportMonthSchema.parse(reportMonth)];
15059
+ const current = now.toISOString().slice(0, 7);
15060
+ if (now.getUTCDate() > 3) return [current];
15061
+ const previous = new Date(Date.parse(calendarMonthBounds(current).since) - 1).toISOString().slice(0, 7);
15062
+ return [previous, current];
15063
+ }
15064
+ function gradedReportMonths(months, now = /* @__PURE__ */ new Date()) {
15065
+ const current = now.toISOString().slice(0, 7);
15066
+ return new Set(months.length > 1 ? months.filter((month) => month !== current) : months);
15067
+ }
15054
15068
  var checkResultSchema = z50.object({
15055
15069
  id: z50.string(),
15056
15070
  category: checkCategorySchema,
15057
15071
  scope: checkScopeSchema,
15058
15072
  title: z50.string(),
15059
15073
  status: checkStatusSchema,
15074
+ notificationPolicy: checkNotificationPolicySchema.optional().describe("Health checks page by default. Silent report advisories remain visible but never affect health alert state."),
15060
15075
  code: z50.string().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),
15061
15076
  summary: z50.string(),
15062
15077
  remediation: z50.string().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),
@@ -15066,6 +15081,7 @@ var checkResultSchema = z50.object({
15066
15081
  var doctorReportSchema = z50.object({
15067
15082
  scope: checkScopeSchema,
15068
15083
  project: z50.string().nullable().describe('Project name when scope is "project", null otherwise.'),
15084
+ reportMonths: z50.array(reportMonthSchema).optional().describe("Calendar months evaluated by project report readiness checks."),
15069
15085
  generatedAt: z50.string().describe("ISO-8601 timestamp when this doctor run started."),
15070
15086
  durationMs: z50.number().int().nonnegative(),
15071
15087
  summary: z50.object({
@@ -15097,6 +15113,15 @@ function summarizeCheckResults(results) {
15097
15113
  }
15098
15114
  return summary;
15099
15115
  }
15116
+ function groupIsoDateRanges(dates) {
15117
+ const ranges = [];
15118
+ for (const date of [...new Set(dates)].sort()) {
15119
+ const previous = ranges.at(-1);
15120
+ if (previous && shiftIsoCalendarDate(previous.end, 1) === date) previous.end = date;
15121
+ else ranges.push({ start: date, end: date });
15122
+ }
15123
+ return ranges;
15124
+ }
15100
15125
 
15101
15126
  // ../contracts/src/index-coverage.ts
15102
15127
  function deriveIndexCoverage(input) {
@@ -20229,8 +20254,13 @@ export {
20229
20254
  CheckStatuses,
20230
20255
  CheckScopes,
20231
20256
  CheckCategories,
20257
+ CheckNotificationPolicies,
20258
+ reportMonthSchema,
20259
+ reportMonthsForDoctor,
20260
+ gradedReportMonths,
20232
20261
  doctorReportSchema,
20233
20262
  summarizeCheckResults,
20263
+ groupIsoDateRanges,
20234
20264
  deriveIndexCoverage,
20235
20265
  normalizeQueryText,
20236
20266
  citationVisibilityResponseSchema,
@@ -13,19 +13,19 @@ import {
13
13
  resolveOperatorApiKeyIds,
14
14
  runWithUsageTags,
15
15
  saveConfigPatch
16
- } from "./chunk-FRWZWJB3.js";
16
+ } from "./chunk-GLLY2GEV.js";
17
17
  import {
18
18
  deleteSiteCrawlGraphLayout,
19
19
  persistSiteCrawlGraphLayout,
20
20
  prepareSiteCrawlGraphLayout
21
- } from "./chunk-HDJHQPW3.js";
21
+ } from "./chunk-3LCR6WU6.js";
22
22
  import {
23
23
  CanonryMcpToolNames,
24
24
  CliError,
25
25
  PACKAGE_VERSION,
26
26
  canonryMcpTools,
27
27
  isMachineFormat
28
- } from "./chunk-WUT3G2GM.js";
28
+ } from "./chunk-DDL2XSNM.js";
29
29
  import {
30
30
  CC_CACHE_DIR,
31
31
  DUCKDB_SPEC,
@@ -172,6 +172,7 @@ import {
172
172
  runChecks,
173
173
  runFills,
174
174
  runs,
175
+ scheduledHealthCheckIds,
175
176
  schedules,
176
177
  serializeUserSessionCookie,
177
178
  siteAuditPages,
@@ -186,7 +187,7 @@ import {
186
187
  siteLivenessState,
187
188
  toAlertView,
188
189
  usageCounters
189
- } from "./chunk-FAVYLZQV.js";
190
+ } from "./chunk-P5VXVFQW.js";
190
191
  import {
191
192
  AGENT_MEMORY_VALUE_MAX_BYTES,
192
193
  AGENT_NONE,
@@ -201,6 +202,7 @@ import {
201
202
  CANONRY_NPM_PACKAGE_URL,
202
203
  CITED_URL_CAPTURE_VERSION,
203
204
  CcReleaseSyncStatuses,
205
+ CheckNotificationPolicies,
204
206
  DEFAULT_VIEWER_RESEARCH_DAILY_RUN_LIMIT,
205
207
  DiscoveryCompetitorTypes,
206
208
  GOOGLE_ADS_CAMPAIGN_METRICS_MAX_CAMPAIGNS,
@@ -303,6 +305,7 @@ import {
303
305
  hostMatchesAnyDomain,
304
306
  hostMatchesDomain,
305
307
  hostOf,
308
+ inclusiveDayCount,
306
309
  isAgentProviderId,
307
310
  isBrowserProvider,
308
311
  isGhostTelemetryEvent,
@@ -331,6 +334,7 @@ import {
331
334
  providerError,
332
335
  providerSupportsLocationContext,
333
336
  registrableDomain,
337
+ reportMonthsForDoctor,
334
338
  resolveProviderModel,
335
339
  resolveSnapshotRequestQueries,
336
340
  retryAfterDelayMs,
@@ -353,7 +357,7 @@ import {
353
357
  visibilityReportRequestSchema,
354
358
  winnabilityClassLabel,
355
359
  withRetry
356
- } from "./chunk-2LO7FLVD.js";
360
+ } from "./chunk-S5OSY3PI.js";
357
361
 
358
362
  // src/runtime-context.ts
359
363
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -6648,7 +6652,7 @@ function nonBlank(value) {
6648
6652
  return trimmed ? trimmed : void 0;
6649
6653
  }
6650
6654
  function resolveBuildCommit(env = process.env) {
6651
- const embedded = true ? "9367462bc55240da41850bf9358ec7327c387258" : void 0;
6655
+ const embedded = true ? "120bbd89c1dedb8df5c2850da43ac2e71ccd3cdc" : void 0;
6652
6656
  return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
6653
6657
  }
6654
6658
  function resolveInstanceIdentity(env = process.env) {
@@ -12235,7 +12239,7 @@ function readStoredGroundingSources(rawResponse) {
12235
12239
  return result2;
12236
12240
  }
12237
12241
  async function backfillInsightsCommand(project, opts) {
12238
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-3UUKRAZ5.js");
12242
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-CXNBKRHV.js");
12239
12243
  const config = loadConfig();
12240
12244
  const db = createClient(config.database);
12241
12245
  migrate(db);
@@ -13436,11 +13440,16 @@ function startSiteLivenessLoop(deps, intervalMs = SITE_LIVENESS_INTERVAL_MS) {
13436
13440
 
13437
13441
  // src/data-refresh.ts
13438
13442
  var log16 = createLogger("DataRefresh");
13439
- async function refreshAllIntegrations(client, projectName) {
13443
+ function gaRefreshDays(now = /* @__PURE__ */ new Date()) {
13444
+ const [reportMonth] = reportMonthsForDoctor(void 0, now);
13445
+ const reach = inclusiveDayCount(`${reportMonth}-01`, now.toISOString().slice(0, 10)) ?? 0;
13446
+ return Math.max(30, reach);
13447
+ }
13448
+ async function refreshAllIntegrations(client, projectName, now = /* @__PURE__ */ new Date()) {
13440
13449
  const integrations = [
13441
13450
  { name: "gsc", run: () => client.gscSync(projectName, {}) },
13442
13451
  { name: "bing", run: () => client.bingInspectSitemap(projectName, {}) },
13443
- { name: "ga", run: () => client.gaSync(projectName, { days: 30 }) },
13452
+ { name: "ga", run: () => client.gaSync(projectName, { days: gaRefreshDays(now) }) },
13444
13453
  { name: "gbp", run: () => client.triggerGbpSync(projectName, {}) },
13445
13454
  // `ads` remains the OpenAI / ChatGPT Ads integration. For scheduled
13446
13455
  // refreshes, Google providers have explicit names and fan out only here.
@@ -13581,13 +13590,15 @@ var Notifier = class {
13581
13590
  return 0;
13582
13591
  }
13583
13592
  };
13584
- const graded = report.checks.filter((c) => c.status === "fail" || c.status === "warn" || c.status === "ok");
13593
+ const healthChecks = report.checks.filter((c) => c.notificationPolicy !== CheckNotificationPolicies.silent);
13594
+ if (healthChecks.length === 0 && report.checks.length > 0) return null;
13595
+ const graded = healthChecks.filter((c) => c.status === "fail" || c.status === "warn" || c.status === "ok");
13585
13596
  const failing = graded.filter((c) => c.status !== "ok").sort((a, b) => rank(b.status) - rank(a.status) || categoryRank(b.category) - categoryRank(a.category) || a.id.localeCompare(b.id));
13586
13597
  const worst = failing.at(0) ?? null;
13587
13598
  const noSignal = graded.length === 0;
13588
13599
  const status = noSignal ? "warn" : worst ? worst.status : "ok";
13589
13600
  const code = noSignal ? "health.no-signal" : worst?.code ?? "health.ok";
13590
- const summary = noSignal ? `No health check produced a result (${report.checks.length} skipped) \u2014 health is unknown, not confirmed.` : worst?.summary ?? `All ${graded.length} health check(s) passing.`;
13601
+ const summary = noSignal ? `No health check produced a result (${healthChecks.length} skipped) \u2014 health is unknown, not confirmed.` : worst?.summary ?? `All ${graded.length} health check(s) passing.`;
13591
13602
  const previous = this.db.select().from(doctorHealthState).where(eq17(doctorHealthState.projectId, projectId)).get();
13592
13603
  const previousStatus = previous?.status ?? null;
13593
13604
  const failingSignature = failing.map((c) => `${c.status}:${c.code}`).join(",");
@@ -19493,7 +19504,7 @@ async function createServer(opts) {
19493
19504
  onDoctorRequested: (projectName) => {
19494
19505
  void (async () => {
19495
19506
  try {
19496
- const report = await schedulerClient.runDoctor({ project: projectName });
19507
+ const report = await schedulerClient.runDoctor({ project: projectName, checkIds: scheduledHealthCheckIds() });
19497
19508
  const project = opts.db.select().from(projects).where(eq27(projects.name, projectName)).get();
19498
19509
  if (!project) {
19499
19510
  app.log.warn({ projectName }, "doctor schedule fired for an unknown project");
@@ -4,14 +4,14 @@ import {
4
4
  installSkills,
5
5
  loadConfigRaw,
6
6
  saveConfigPatch
7
- } from "./chunk-FRWZWJB3.js";
7
+ } from "./chunk-GLLY2GEV.js";
8
8
  import {
9
9
  PACKAGE_VERSION
10
- } from "./chunk-WUT3G2GM.js";
10
+ } from "./chunk-DDL2XSNM.js";
11
11
  import {
12
12
  SKILL_MANIFEST_FILENAME,
13
13
  SkillsClients
14
- } from "./chunk-2LO7FLVD.js";
14
+ } from "./chunk-S5OSY3PI.js";
15
15
 
16
16
  // src/skills-autosync.ts
17
17
  import fs from "fs";
package/dist/cli.js CHANGED
@@ -35,11 +35,11 @@ import {
35
35
  trackCliCommandFinished,
36
36
  trackEvent,
37
37
  waitForServerRuntimeStartup
38
- } from "./chunk-NFN5GSEJ.js";
38
+ } from "./chunk-XFHXKLNT.js";
39
39
  import {
40
40
  autoSyncSkills,
41
41
  formatAutoSyncNotice
42
- } from "./chunk-MEAKE5W7.js";
42
+ } from "./chunk-YTSXQUJ3.js";
43
43
  import {
44
44
  configExists,
45
45
  createApiClient,
@@ -56,13 +56,13 @@ import {
56
56
  saveConfig,
57
57
  saveConfigPatch,
58
58
  shouldPrintServeSkillsNudge
59
- } from "./chunk-FRWZWJB3.js";
59
+ } from "./chunk-GLLY2GEV.js";
60
60
  import {
61
61
  DEFAULT_DEMO_TRUSTED_PROXIES,
62
62
  trustedProxiesProblem,
63
63
  trustedProxyProblem
64
64
  } from "./chunk-RB2F4D3Z.js";
65
- import "./chunk-HDJHQPW3.js";
65
+ import "./chunk-3LCR6WU6.js";
66
66
  import {
67
67
  CliError,
68
68
  EXIT_SYSTEM_ERROR,
@@ -74,7 +74,7 @@ import {
74
74
  runMeasurementDraftAction,
75
75
  systemError,
76
76
  usageError
77
- } from "./chunk-WUT3G2GM.js";
77
+ } from "./chunk-DDL2XSNM.js";
78
78
  import {
79
79
  CLOUDFLARE_WORKER_BINDINGS,
80
80
  CLOUDFLARE_WORKER_GENERATED_MARKER,
@@ -89,7 +89,7 @@ import {
89
89
  queries,
90
90
  renderReportHtml,
91
91
  runs
92
- } from "./chunk-FAVYLZQV.js";
92
+ } from "./chunk-P5VXVFQW.js";
93
93
  import {
94
94
  AdsDeliverySnapshotStatuses,
95
95
  AdsHistoricalCampaignRollupStatuses,
@@ -179,7 +179,7 @@ import {
179
179
  visibilityCompareSelectionSchema,
180
180
  visibilityReportRequestSchema,
181
181
  winnabilityClassSchema
182
- } from "./chunk-2LO7FLVD.js";
182
+ } from "./chunk-S5OSY3PI.js";
183
183
 
184
184
  // src/cli.ts
185
185
  import { pathToFileURL } from "url";
@@ -444,7 +444,7 @@ function parseDemoTrustedProxies(values) {
444
444
  async function demoCommand(options) {
445
445
  const { host, port } = parseDemoListenOptions(options);
446
446
  const trustProxy = parseDemoTrustedProxies(options.trustProxy);
447
- const { createDemoServer } = await import("./demo-server-7BVVVXPM.js");
447
+ const { createDemoServer } = await import("./demo-server-HULNEORN.js");
448
448
  const app = await createDemoServer({ trustProxy });
449
449
  let stopping = false;
450
450
  const stop = () => {
@@ -3051,7 +3051,8 @@ async function doctorCommand(opts) {
3051
3051
  const client = createApiClient();
3052
3052
  const report = await client.runDoctor({
3053
3053
  project: opts.project,
3054
- checkIds: opts.checks
3054
+ checkIds: opts.checks,
3055
+ ...opts.reportMonth ? { reportMonth: opts.reportMonth } : {}
3055
3056
  });
3056
3057
  if (opts.format === "json") {
3057
3058
  console.log(JSON.stringify(report, null, 2));
@@ -3077,8 +3078,8 @@ async function runDoctorAll(opts) {
3077
3078
  const client = createApiClient();
3078
3079
  const projects2 = await client.listProjects();
3079
3080
  const [globalReport, ...projectReports] = await Promise.all([
3080
- client.runDoctor({ checkIds: opts.checks }),
3081
- ...projects2.map((p) => client.runDoctor({ project: p.name, checkIds: opts.checks }))
3081
+ client.runDoctor({ checkIds: opts.checks, ...opts.reportMonth ? { reportMonth: opts.reportMonth } : {} }),
3082
+ ...projects2.map((p) => client.runDoctor({ project: p.name, checkIds: opts.checks, ...opts.reportMonth ? { reportMonth: opts.reportMonth } : {} }))
3082
3083
  ]);
3083
3084
  const byKey = { __global__: globalReport };
3084
3085
  projects2.forEach((p, i) => {
@@ -3174,13 +3175,14 @@ ${header}`);
3174
3175
  }
3175
3176
 
3176
3177
  // src/cli-commands/doctor.ts
3177
- var USAGE = "canonry doctor [--project <name>|--all] [--check <id>...] [--format json|jsonl]";
3178
+ var USAGE = "canonry doctor [--project <name>|--all] [--check <id>...] [--report-month YYYY-MM] [--format json|jsonl]";
3178
3179
  var DOCTOR_CLI_COMMANDS = [
3179
3180
  {
3180
3181
  path: ["doctor"],
3181
3182
  usage: USAGE,
3182
3183
  options: {
3183
3184
  project: stringOption(),
3185
+ "report-month": stringOption(),
3184
3186
  check: multiStringOption(),
3185
3187
  all: { type: "boolean" }
3186
3188
  },
@@ -3188,6 +3190,7 @@ var DOCTOR_CLI_COMMANDS = [
3188
3190
  run: async (input) => {
3189
3191
  await doctorCommand({
3190
3192
  project: getString(input.values, "project"),
3193
+ reportMonth: getString(input.values, "report-month"),
3191
3194
  all: getBoolean(input.values, "all"),
3192
3195
  checks: getStringArray(input.values, "check"),
3193
3196
  format: input.format
@@ -4,11 +4,11 @@ import {
4
4
  import {
5
5
  layoutSiteCrawlGraphInput,
6
6
  persistSiteCrawlGraphLayout
7
- } from "./chunk-HDJHQPW3.js";
7
+ } from "./chunk-3LCR6WU6.js";
8
8
  import {
9
9
  PACKAGE_VERSION,
10
10
  canonryMcpTools
11
- } from "./chunk-WUT3G2GM.js";
11
+ } from "./chunk-DDL2XSNM.js";
12
12
  import {
13
13
  HISTORY_WINDOW_RUNS,
14
14
  IntelligenceService,
@@ -84,7 +84,7 @@ import {
84
84
  siteCrawlPages,
85
85
  siteCrawlSnapshots,
86
86
  trafficSources
87
- } from "./chunk-FAVYLZQV.js";
87
+ } from "./chunk-P5VXVFQW.js";
88
88
  import {
89
89
  RunKinds,
90
90
  SiteCrawlFetchStates,
@@ -108,7 +108,7 @@ import {
108
108
  placementLinkDecision,
109
109
  siteAuditPageFactorSchema,
110
110
  wilsonInterval
111
- } from "./chunk-2LO7FLVD.js";
111
+ } from "./chunk-S5OSY3PI.js";
112
112
 
113
113
  // src/demo-server.ts
114
114
  import { dirname, join as join2 } from "path";
package/dist/index.js CHANGED
@@ -3,14 +3,14 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-NFN5GSEJ.js";
6
+ } from "./chunk-XFHXKLNT.js";
7
7
  import {
8
8
  loadConfig
9
- } from "./chunk-FRWZWJB3.js";
10
- import "./chunk-HDJHQPW3.js";
11
- import "./chunk-WUT3G2GM.js";
12
- import "./chunk-FAVYLZQV.js";
13
- import "./chunk-2LO7FLVD.js";
9
+ } from "./chunk-GLLY2GEV.js";
10
+ import "./chunk-3LCR6WU6.js";
11
+ import "./chunk-DDL2XSNM.js";
12
+ import "./chunk-P5VXVFQW.js";
13
+ import "./chunk-S5OSY3PI.js";
14
14
  export {
15
15
  GoogleMarketingRuntimeError,
16
16
  createGoogleMarketingCredentialStore,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  HISTORY_WINDOW_RUNS,
3
3
  IntelligenceService
4
- } from "./chunk-FAVYLZQV.js";
5
- import "./chunk-2LO7FLVD.js";
4
+ } from "./chunk-P5VXVFQW.js";
5
+ import "./chunk-S5OSY3PI.js";
6
6
  export {
7
7
  HISTORY_WINDOW_RUNS,
8
8
  IntelligenceService
package/dist/mcp.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  autoSyncSkills
3
- } from "./chunk-MEAKE5W7.js";
3
+ } from "./chunk-YTSXQUJ3.js";
4
4
  import {
5
5
  createApiClient,
6
6
  createCanonryMcpServer
7
- } from "./chunk-FRWZWJB3.js";
8
- import "./chunk-WUT3G2GM.js";
7
+ } from "./chunk-GLLY2GEV.js";
8
+ import "./chunk-DDL2XSNM.js";
9
9
  import {
10
10
  isReadOnlyKey,
11
11
  updateCheckEnvOptOut
12
- } from "./chunk-2LO7FLVD.js";
12
+ } from "./chunk-S5OSY3PI.js";
13
13
 
14
14
  // src/mcp/cli.ts
15
15
  import { randomUUID } from "crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonry/canonry",
3
- "version": "5.21.0",
3
+ "version": "5.22.0",
4
4
  "type": "module",
5
5
  "description": "Self-hosted AI visibility (AEO) platform: track how ChatGPT, Claude, Gemini, and Perplexity cite your domain, join it with Search Console, GA4, server-side traffic, and paid media, and fix what you find through agent tools (CLI, REST, MCP). Local SQLite.",
6
6
  "keywords": [
@@ -88,30 +88,30 @@
88
88
  "tsx": "^4.19.0",
89
89
  "@ainyc/canonry-web": "0.0.0",
90
90
  "@ainyc/canonry-api-client": "0.0.0",
91
+ "@ainyc/canonry-config": "0.0.0",
91
92
  "@ainyc/canonry-api-routes": "0.0.0",
92
93
  "@ainyc/canonry-contracts": "0.0.0",
93
- "@ainyc/canonry-config": "0.0.0",
94
94
  "@ainyc/canonry-db": "0.0.0",
95
95
  "@ainyc/canonry-integration-bing": "0.0.0",
96
96
  "@ainyc/canonry-integration-cloud-run": "0.0.0",
97
+ "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
97
98
  "@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
98
99
  "@ainyc/canonry-integration-google": "0.0.0",
99
- "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
100
- "@ainyc/canonry-integration-google-ads": "0.0.0",
101
100
  "@ainyc/canonry-integration-google-business-profile": "0.0.0",
102
- "@ainyc/canonry-integration-google-places": "0.0.0",
103
101
  "@ainyc/canonry-integration-commoncrawl": "0.0.0",
104
- "@ainyc/canonry-integration-google-tag-manager": "0.0.0",
102
+ "@ainyc/canonry-integration-google-places": "0.0.0",
103
+ "@ainyc/canonry-integration-google-ads": "0.0.0",
105
104
  "@ainyc/canonry-integration-openai-ads": "0.0.0",
106
- "@ainyc/canonry-integration-wordpress": "0.0.0",
107
- "@ainyc/canonry-integration-traffic": "0.0.0",
108
105
  "@ainyc/canonry-intelligence": "0.0.0",
106
+ "@ainyc/canonry-integration-google-tag-manager": "0.0.0",
107
+ "@ainyc/canonry-integration-wordpress": "0.0.0",
109
108
  "@ainyc/canonry-provider-cdp": "0.0.0",
109
+ "@ainyc/canonry-integration-traffic": "0.0.0",
110
+ "@ainyc/canonry-provider-local": "0.0.0",
110
111
  "@ainyc/canonry-provider-gemini": "0.0.0",
111
- "@ainyc/canonry-provider-claude": "0.0.0",
112
112
  "@ainyc/canonry-provider-openai": "0.0.0",
113
- "@ainyc/canonry-provider-perplexity": "0.0.0",
114
- "@ainyc/canonry-provider-local": "0.0.0"
113
+ "@ainyc/canonry-provider-claude": "0.0.0",
114
+ "@ainyc/canonry-provider-perplexity": "0.0.0"
115
115
  },
116
116
  "scripts": {
117
117
  "build": "pnpm run build:cli && pnpm run build:web",