@canonry/canonry 7.64.3 → 7.64.4

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 (26) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
  2. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +3 -2
  3. package/dist/{backfill-PPRSFYAV.js → backfill-NEYUHVUQ.js} +3 -3
  4. package/dist/{chunk-Q4JRFMCJ.js → chunk-4E6E27C5.js} +1 -1
  5. package/dist/{chunk-YNPUS3Y7.js → chunk-7A3CQCEV.js} +1 -1
  6. package/dist/{chunk-UX667IQM.js → chunk-ATXHIX32.js} +1 -1
  7. package/dist/{chunk-CCJIMTYO.js → chunk-MBNS5AND.js} +1 -1
  8. package/dist/{chunk-LSKAENOY.js → chunk-OHOIEA3X.js} +21 -6
  9. package/dist/{chunk-MLXU4QOF.js → chunk-PG6Q6MEF.js} +29 -29
  10. package/dist/{chunk-NYTPS5WW.js → chunk-QGDFDP3H.js} +3 -3
  11. package/dist/{chunk-HQGMIHG6.js → chunk-VOWM62EC.js} +5 -5
  12. package/dist/{chunk-DPRGW4BM.js → chunk-ZOP2F25H.js} +1 -1
  13. package/dist/{cli-commands-YUBGTHRG.js → cli-commands-HGKM2B6J.js} +1 -1
  14. package/dist/cli.js +2 -2
  15. package/dist/{dashboard-OX2JEGEK.js → dashboard-3QKO5423.js} +2 -2
  16. package/dist/{demo-NMMLZ6VZ.js → demo-3GNJPXGE.js} +1 -1
  17. package/dist/{demo-server-VD6C773Q.js → demo-server-23QGNLCX.js} +3 -3
  18. package/dist/index.d.ts +12 -12
  19. package/dist/index.js +6 -6
  20. package/dist/{init-TDAXSYRR.js → init-LIUMX2HQ.js} +1 -1
  21. package/dist/{intelligence-service-GCISXTKM.js → intelligence-service-FTCGYX6T.js} +3 -3
  22. package/dist/{serve-C2TW7ZZC.js → serve-XEQ7ZW4N.js} +7 -7
  23. package/dist/{session-5MVIOTFY.js → session-P5QHGJLK.js} +4 -4
  24. package/dist/{tools-NDQN64CH.js → tools-RGBSLMRZ.js} +3 -3
  25. package/dist/{traffic-W3NOHWNK.js → traffic-J3SSIDXQ.js} +1 -1
  26. package/package.json +1 -1
@@ -1925,7 +1925,7 @@ days to return. `list` returns those visitors newest first with their first 20
1925
1925
  visits (`visitCount` is the total) and marks user-agent-only keys; `show` pages
1926
1926
  through one visitor's visits and requests. A visit ends after 30 idle minutes
1927
1927
  or when the visitor arrives again from another outside source; a same-site,
1928
- sign-in or payment referer is a step inside the visit.
1928
+ sign-in, payment or booking-engine referer is a step inside the visit.
1929
1929
 
1930
1930
  Visits are stored when they fall within 30 days after one of the visitor's AI visits;
1931
1931
  rows are deleted after 180 days. A visitor key is a keyed hash, never an IP.
@@ -1232,8 +1232,9 @@ every source and needs no site snippet or goal setup. Read it with
1232
1232
  visit already kept; rows are deleted after 180 days. Journeys start from the
1233
1233
  first sync after upgrade; backfill a Cloud Run or Vercel source to seed
1234
1234
  history it still retains.
1235
- - Sign-in and payment return pages (Google accounts, Stripe, PayPal and the
1236
- like) are steps inside a visit, not new arrivals. Query strings keep only
1235
+ - Sign-in, payment and booking-engine return pages (Google accounts, Stripe,
1236
+ PayPal, hosted hotel booking engines and the like) are steps inside a
1237
+ visit, not new arrivals. Listing marketplaces still count as referrals. Query strings keep only
1237
1238
  `utm_*`; path segments that look like secrets are masked.
1238
1239
 
1239
1240
  ### Inspect stored samples
@@ -10,7 +10,7 @@ import {
10
10
  backfillSnapshotAttributionCommand,
11
11
  backfillTrafficClassificationCommand,
12
12
  replayQueryAuditLog
13
- } from "./chunk-NYTPS5WW.js";
13
+ } from "./chunk-QGDFDP3H.js";
14
14
  import "./chunk-DIS2JA7D.js";
15
15
  import "./chunk-22XKOBJD.js";
16
16
  import "./chunk-HGMYEDAQ.js";
@@ -18,8 +18,8 @@ import "./chunk-KJA7V3IT.js";
18
18
  import {
19
19
  backfillProjectAnswerMentions,
20
20
  backfillProjectAnswerMentionsInChunks
21
- } from "./chunk-UX667IQM.js";
22
- import "./chunk-LSKAENOY.js";
21
+ } from "./chunk-ATXHIX32.js";
22
+ import "./chunk-OHOIEA3X.js";
23
23
  import "./chunk-ZTO5KPQB.js";
24
24
  import "./chunk-NCUTFEU4.js";
25
25
  import "./chunk-YVYID65D.js";
@@ -14,7 +14,7 @@ import {
14
14
  mergeGscQueryTotalsWithFallback,
15
15
  readGscQueryDailyRows,
16
16
  readLatestGscDataDate
17
- } from "./chunk-UX667IQM.js";
17
+ } from "./chunk-ATXHIX32.js";
18
18
  import {
19
19
  getRequestContext
20
20
  } from "./chunk-ZTO5KPQB.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-UX667IQM.js";
13
+ } from "./chunk-ATXHIX32.js";
14
14
  import {
15
15
  DEFAULT_COMPETITOR_AUTO_ALIAS_MODE,
16
16
  MeasurementPortfolioLists,
@@ -9,7 +9,7 @@ import {
9
9
  normalizeCloudflareWorkerEvent,
10
10
  sessionizeJourneyRequests,
11
11
  verifyRequestSignature
12
- } from "./chunk-LSKAENOY.js";
12
+ } from "./chunk-OHOIEA3X.js";
13
13
  import {
14
14
  currentOutcomeAttribution,
15
15
  getRequestContext,
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-YNPUS3Y7.js";
8
+ } from "./chunk-7A3CQCEV.js";
9
9
  import {
10
10
  CANONRY_MCP_TOOLKITS
11
11
  } from "./chunk-NCIPNVD6.js";
@@ -14516,14 +14516,21 @@ var KEPT_QUERY_PARAMETERS = ["utm_source", "utm_medium", "utm_campaign", "utm_te
14516
14516
  var AD_CLICK_ID_PARAMETERS = ["gclid", "gbraid", "wbraid", "dclid", "msclkid", "ttclid", "li_fat_id"];
14517
14517
  var NETWORK_CLICK_ID_PARAMETERS = { fbclid: "Facebook", twclid: "X" };
14518
14518
  var STEP_REFERER_HOSTS = [
14519
+ // Sign-in.
14519
14520
  "accounts.google.com",
14520
14521
  "accounts.youtube.com",
14521
- "pay.google.com",
14522
14522
  "appleid.apple.com",
14523
14523
  "login.microsoftonline.com",
14524
14524
  "login.live.com",
14525
14525
  "login.microsoft.com",
14526
14526
  "github.com/login",
14527
+ "auth0.com",
14528
+ "okta.com",
14529
+ "onelogin.com",
14530
+ "amazoncognito.com",
14531
+ "clerk.accounts.dev",
14532
+ // Payment and checkout.
14533
+ "pay.google.com",
14527
14534
  "checkout.stripe.com",
14528
14535
  "js.stripe.com",
14529
14536
  "hooks.stripe.com",
@@ -14532,6 +14539,7 @@ var STEP_REFERER_HOSTS = [
14532
14539
  "paypal.com",
14533
14540
  "pay.amazon.com",
14534
14541
  "checkout.shopify.com",
14542
+ "pay.shopify.com",
14535
14543
  "shop.app",
14536
14544
  "klarna.com",
14537
14545
  "afterpay.com",
@@ -14539,11 +14547,18 @@ var STEP_REFERER_HOSTS = [
14539
14547
  "checkout.square.site",
14540
14548
  "adyen.com",
14541
14549
  "braintreegateway.com",
14542
- "auth0.com",
14543
- "okta.com",
14544
- "onelogin.com",
14545
- "amazoncognito.com",
14546
- "clerk.accounts.dev"
14550
+ // Hotel and lodging booking engines.
14551
+ "mews.com",
14552
+ "cloudbeds.com",
14553
+ "synxis.com",
14554
+ "travelclick.com",
14555
+ "thebookingbutton.com",
14556
+ "webrezpro.com",
14557
+ "littlehotelier.com",
14558
+ "book-directonline.com",
14559
+ "beds24.com",
14560
+ "resnexus.com",
14561
+ "thinkreservations.com"
14547
14562
  ];
14548
14563
  var MAX_PATH_LENGTH = 512;
14549
14564
  var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
@@ -599,7 +599,7 @@ var DEMO_CLI_COMMANDS = [{
599
599
  options: { host: stringOption(), port: stringOption(), "trust-proxy": multiStringOption() },
600
600
  allowPositionals: false,
601
601
  run: async (input) => {
602
- const { demoCommand } = await import("./demo-NMMLZ6VZ.js");
602
+ const { demoCommand } = await import("./demo-3GNJPXGE.js");
603
603
  await demoCommand({
604
604
  host: getString(input.values, "host"),
605
605
  port: getString(input.values, "port"),
@@ -620,7 +620,7 @@ var BACKFILL_CLI_COMMANDS = [
620
620
  allowPositionals: false,
621
621
  supportsDryRun: true,
622
622
  run: async (input) => {
623
- const { backfillAnswerVisibilityCommand } = await import("./backfill-PPRSFYAV.js");
623
+ const { backfillAnswerVisibilityCommand } = await import("./backfill-NEYUHVUQ.js");
624
624
  await backfillAnswerVisibilityCommand({
625
625
  project: getString(input.values, "project"),
626
626
  dryRun: input.dryRun,
@@ -637,7 +637,7 @@ var BACKFILL_CLI_COMMANDS = [
637
637
  allowPositionals: false,
638
638
  supportsDryRun: true,
639
639
  run: async (input) => {
640
- const { backfillAnswerMentionsCommand } = await import("./backfill-PPRSFYAV.js");
640
+ const { backfillAnswerMentionsCommand } = await import("./backfill-NEYUHVUQ.js");
641
641
  await backfillAnswerMentionsCommand({
642
642
  project: getString(input.values, "project"),
643
643
  dryRun: input.dryRun,
@@ -655,7 +655,7 @@ var BACKFILL_CLI_COMMANDS = [
655
655
  },
656
656
  supportsDryRun: true,
657
657
  run: async (input) => {
658
- const { backfillInsightsCommand } = await import("./backfill-PPRSFYAV.js");
658
+ const { backfillInsightsCommand } = await import("./backfill-NEYUHVUQ.js");
659
659
  const usage = "canonry backfill insights <project> [--from-run <id>] [--to-run <id>] [--since <date>] [--dry-run] [--format json]";
660
660
  const project3 = requireProject(input, "backfill insights", usage);
661
661
  await backfillInsightsCommand(project3, {
@@ -675,7 +675,7 @@ var BACKFILL_CLI_COMMANDS = [
675
675
  },
676
676
  allowPositionals: false,
677
677
  run: async (input) => {
678
- const { backfillNormalizedPathsCommand } = await import("./backfill-PPRSFYAV.js");
678
+ const { backfillNormalizedPathsCommand } = await import("./backfill-NEYUHVUQ.js");
679
679
  await backfillNormalizedPathsCommand({
680
680
  project: getString(input.values, "project"),
681
681
  format: input.format
@@ -690,7 +690,7 @@ var BACKFILL_CLI_COMMANDS = [
690
690
  },
691
691
  allowPositionals: false,
692
692
  run: async (input) => {
693
- const { backfillAiReferralPathsCommand } = await import("./backfill-PPRSFYAV.js");
693
+ const { backfillAiReferralPathsCommand } = await import("./backfill-NEYUHVUQ.js");
694
694
  await backfillAiReferralPathsCommand({
695
695
  project: getString(input.values, "project"),
696
696
  format: input.format
@@ -702,7 +702,7 @@ var BACKFILL_CLI_COMMANDS = [
702
702
  usage: "canonry backfill snapshot-attribution <project> [--dry-run] [--format json]",
703
703
  supportsDryRun: true,
704
704
  run: async (input) => {
705
- const { backfillSnapshotAttributionCommand } = await import("./backfill-PPRSFYAV.js");
705
+ const { backfillSnapshotAttributionCommand } = await import("./backfill-NEYUHVUQ.js");
706
706
  const usage = "canonry backfill snapshot-attribution <project> [--dry-run] [--format json]";
707
707
  const project3 = requireProject(input, "backfill snapshot-attribution", usage);
708
708
  await backfillSnapshotAttributionCommand({
@@ -721,7 +721,7 @@ var BACKFILL_CLI_COMMANDS = [
721
721
  allowPositionals: false,
722
722
  supportsDryRun: true,
723
723
  run: async (input) => {
724
- const { backfillTrafficClassificationCommand } = await import("./backfill-PPRSFYAV.js");
724
+ const { backfillTrafficClassificationCommand } = await import("./backfill-NEYUHVUQ.js");
725
725
  await backfillTrafficClassificationCommand({
726
726
  project: getString(input.values, "project"),
727
727
  dryRun: input.dryRun,
@@ -1163,7 +1163,7 @@ var DASHBOARD_CLI_COMMANDS = [
1163
1163
  usage: "canonry dashboard reset-password [--format json]",
1164
1164
  help: "Clears the dashboard password from config.yaml, so the dashboard asks for a new one after a restart.\nLocal only: it edits the config file under CANONRY_CONFIG_DIR and does not call the server.",
1165
1165
  run: async (input) => {
1166
- const { resetDashboardPassword } = await import("./dashboard-OX2JEGEK.js");
1166
+ const { resetDashboardPassword } = await import("./dashboard-3QKO5423.js");
1167
1167
  await resetDashboardPassword({ format: input.format });
1168
1168
  }
1169
1169
  },
@@ -3108,7 +3108,7 @@ var TRAFFIC_CLI_COMMANDS = [
3108
3108
  help: "Complete stored traffic totals and breakdowns for the selected window. Project-wide for Simple and Advanced portfolios; no provider calls or sync.",
3109
3109
  options: { period: stringOption() },
3110
3110
  run: async (input) => {
3111
- const { trafficAnalytics } = await import("./traffic-W3NOHWNK.js");
3111
+ const { trafficAnalytics } = await import("./traffic-J3SSIDXQ.js");
3112
3112
  const project3 = requireProject(input, "traffic.analytics", "canonry traffic analytics <project> [--period 7|14|30|90]");
3113
3113
  await trafficAnalytics(project3, { period: getString(input.values, "window") ?? getString(input.values, "period"), format: input.format });
3114
3114
  }
@@ -3120,7 +3120,7 @@ var TRAFFIC_CLI_COMMANDS = [
3120
3120
  help: "DB-only diagnostic. Raw headlines stay unchanged. Candidate bursts are not confirmed automation; adjusted counts are estimates. Property, Target and market attribution are unavailable. The observed GA quotient has unknown comparable coverage.",
3121
3121
  options: { "start-date": stringOption(), "end-date": stringOption(), source: stringOption(), "burst-threshold": stringOption(), "ratio-threshold": stringOption(), limit: stringOption() },
3122
3122
  run: async (input) => {
3123
- const { trafficReferralAssessment } = await import("./traffic-W3NOHWNK.js");
3123
+ const { trafficReferralAssessment } = await import("./traffic-J3SSIDXQ.js");
3124
3124
  const project3 = requireProject(input, "traffic.referral-assessment", "canonry traffic referral-assessment <project> --start-date YYYY-MM-DD --end-date YYYY-MM-DD");
3125
3125
  await trafficReferralAssessment(project3, {
3126
3126
  startDate: getString(input.values, "start") ?? getString(input.values, "start-date"),
@@ -3153,7 +3153,7 @@ var TRAFFIC_CLI_COMMANDS = [
3153
3153
  "confirm-fail-open": { type: "boolean" }
3154
3154
  },
3155
3155
  run: async (input) => {
3156
- const { trafficConnectCloudflare, DEFAULT_CLOUDFLARE_QUEUE_RETENTION_SECONDS } = await import("./traffic-W3NOHWNK.js");
3156
+ const { trafficConnectCloudflare, DEFAULT_CLOUDFLARE_QUEUE_RETENTION_SECONDS } = await import("./traffic-J3SSIDXQ.js");
3157
3157
  const forwardPageViews = getBoolean(input.values, "forward-page-views");
3158
3158
  const noForwardPageViews = getBoolean(input.values, "no-forward-page-views");
3159
3159
  if (forwardPageViews && noForwardPageViews) {
@@ -3206,7 +3206,7 @@ var TRAFFIC_CLI_COMMANDS = [
3206
3206
  "display-name": stringOption()
3207
3207
  },
3208
3208
  run: async (input) => {
3209
- const { trafficConnectCloudRun } = await import("./traffic-W3NOHWNK.js");
3209
+ const { trafficConnectCloudRun } = await import("./traffic-J3SSIDXQ.js");
3210
3210
  const project3 = requireProject(
3211
3211
  input,
3212
3212
  "traffic.connect.cloud-run",
@@ -3237,7 +3237,7 @@ var TRAFFIC_CLI_COMMANDS = [
3237
3237
  "display-name": stringOption()
3238
3238
  },
3239
3239
  run: async (input) => {
3240
- const { trafficConnectWordpress } = await import("./traffic-W3NOHWNK.js");
3240
+ const { trafficConnectWordpress } = await import("./traffic-J3SSIDXQ.js");
3241
3241
  const project3 = requireProject(
3242
3242
  input,
3243
3243
  "traffic.connect.wordpress",
@@ -3269,7 +3269,7 @@ var TRAFFIC_CLI_COMMANDS = [
3269
3269
  "display-name": stringOption()
3270
3270
  },
3271
3271
  run: async (input) => {
3272
- const { trafficConnectVercel } = await import("./traffic-W3NOHWNK.js");
3272
+ const { trafficConnectVercel } = await import("./traffic-J3SSIDXQ.js");
3273
3273
  const project3 = requireProject(
3274
3274
  input,
3275
3275
  "traffic.connect.vercel",
@@ -3308,7 +3308,7 @@ var TRAFFIC_CLI_COMMANDS = [
3308
3308
  source: stringOption()
3309
3309
  },
3310
3310
  run: async (input) => {
3311
- const { trafficActivate } = await import("./traffic-W3NOHWNK.js");
3311
+ const { trafficActivate } = await import("./traffic-J3SSIDXQ.js");
3312
3312
  const project3 = requireProject(
3313
3313
  input,
3314
3314
  "traffic.activate",
@@ -3327,7 +3327,7 @@ var TRAFFIC_CLI_COMMANDS = [
3327
3327
  "since-minutes": stringOption()
3328
3328
  },
3329
3329
  run: async (input) => {
3330
- const { trafficSync } = await import("./traffic-W3NOHWNK.js");
3330
+ const { trafficSync } = await import("./traffic-J3SSIDXQ.js");
3331
3331
  const project3 = requireProject(
3332
3332
  input,
3333
3333
  "traffic.sync",
@@ -3356,7 +3356,7 @@ var TRAFFIC_CLI_COMMANDS = [
3356
3356
  wait: { type: "boolean" }
3357
3357
  },
3358
3358
  run: async (input) => {
3359
- const { trafficBackfill } = await import("./traffic-W3NOHWNK.js");
3359
+ const { trafficBackfill } = await import("./traffic-J3SSIDXQ.js");
3360
3360
  const project3 = requireProject(
3361
3361
  input,
3362
3362
  "traffic.backfill",
@@ -3385,7 +3385,7 @@ var TRAFFIC_CLI_COMMANDS = [
3385
3385
  "advance-to-now": { type: "boolean" }
3386
3386
  },
3387
3387
  run: async (input) => {
3388
- const { trafficReset } = await import("./traffic-W3NOHWNK.js");
3388
+ const { trafficReset } = await import("./traffic-J3SSIDXQ.js");
3389
3389
  const project3 = requireProject(
3390
3390
  input,
3391
3391
  "traffic.reset",
@@ -3407,7 +3407,7 @@ var TRAFFIC_CLI_COMMANDS = [
3407
3407
  source: stringOption()
3408
3408
  },
3409
3409
  run: async (input) => {
3410
- const { trafficDeclareGap } = await import("./traffic-W3NOHWNK.js");
3410
+ const { trafficDeclareGap } = await import("./traffic-J3SSIDXQ.js");
3411
3411
  const project3 = requireProject(
3412
3412
  input,
3413
3413
  "traffic.declare-gap",
@@ -3422,7 +3422,7 @@ var TRAFFIC_CLI_COMMANDS = [
3422
3422
  path: ["traffic", "sources"],
3423
3423
  usage: "canonry traffic sources <project> [--format json]",
3424
3424
  run: async (input) => {
3425
- const { trafficSources } = await import("./traffic-W3NOHWNK.js");
3425
+ const { trafficSources } = await import("./traffic-J3SSIDXQ.js");
3426
3426
  const project3 = requireProject(
3427
3427
  input,
3428
3428
  "traffic.sources",
@@ -3435,7 +3435,7 @@ var TRAFFIC_CLI_COMMANDS = [
3435
3435
  path: ["traffic", "status"],
3436
3436
  usage: "canonry traffic status <project> [--format json]",
3437
3437
  run: async (input) => {
3438
- const { trafficStatus } = await import("./traffic-W3NOHWNK.js");
3438
+ const { trafficStatus } = await import("./traffic-J3SSIDXQ.js");
3439
3439
  const project3 = requireProject(
3440
3440
  input,
3441
3441
  "traffic.status",
@@ -3450,7 +3450,7 @@ var TRAFFIC_CLI_COMMANDS = [
3450
3450
  help: "Stored sampled tail with 30-day retention, not visits. Unknown traffic is excluded by default. No provider calls.",
3451
3451
  options: { kind: stringOption(), source: stringOption(), since: stringOption(), until: stringOption(), "since-minutes": stringOption(), path: stringOption(), limit: stringOption(), offset: stringOption() },
3452
3452
  run: async (input) => {
3453
- const { trafficSamples } = await import("./traffic-W3NOHWNK.js");
3453
+ const { trafficSamples } = await import("./traffic-J3SSIDXQ.js");
3454
3454
  const project3 = requireProject(input, "traffic.samples", "canonry traffic samples <project>");
3455
3455
  const integer = (name) => parseIntegerOption(input, name, { command: "traffic.samples", usage: "canonry traffic samples <project>", message: `--${name} must be an integer` });
3456
3456
  await trafficSamples(project3, { kind: getString(input.values, "kind"), sourceId: getString(input.values, "source"), since: getString(input.values, "since"), until: getString(input.values, "until"), sinceMinutes: integer("since-minutes"), path: getString(input.values, "path"), limit: integer("limit"), offset: integer("offset"), format: input.format });
@@ -3469,7 +3469,7 @@ var TRAFFIC_CLI_COMMANDS = [
3469
3469
  granularity: stringOption()
3470
3470
  },
3471
3471
  run: async (input) => {
3472
- const { trafficEvents } = await import("./traffic-W3NOHWNK.js");
3472
+ const { trafficEvents } = await import("./traffic-J3SSIDXQ.js");
3473
3473
  const project3 = requireProject(
3474
3474
  input,
3475
3475
  "traffic.events",
@@ -6732,7 +6732,7 @@ var SYSTEM_CLI_COMMANDS = [
6732
6732
  options: { access: stringOption() },
6733
6733
  run: async (input) => {
6734
6734
  if (input.positionals.length > 1) throw usageError("Expected at most one command group");
6735
- const [{ printCliCatalog }, { REGISTERED_CLI_COMMANDS: REGISTERED_CLI_COMMANDS2 }] = await Promise.all([import("./cli-catalog-G7USVSOC.js"), import("./cli-commands-YUBGTHRG.js")]);
6735
+ const [{ printCliCatalog }, { REGISTERED_CLI_COMMANDS: REGISTERED_CLI_COMMANDS2 }] = await Promise.all([import("./cli-catalog-G7USVSOC.js"), import("./cli-commands-HGKM2B6J.js")]);
6736
6736
  printCliCatalog(REGISTERED_CLI_COMMANDS2, input.format, input.positionals[0], getString(input.values, "access"));
6737
6737
  }
6738
6738
  },
@@ -6781,7 +6781,7 @@ var SYSTEM_CLI_COMMANDS = [
6781
6781
  },
6782
6782
  allowPositionals: false,
6783
6783
  run: async (input) => {
6784
- const { initCommand } = await import("./init-TDAXSYRR.js");
6784
+ const { initCommand } = await import("./init-LIUMX2HQ.js");
6785
6785
  await initCommand({
6786
6786
  force: getBoolean(input.values, "force"),
6787
6787
  ref: getString(input.values, "ref"),
@@ -6836,7 +6836,7 @@ var SYSTEM_CLI_COMMANDS = [
6836
6836
  allowPositionals: false,
6837
6837
  run: async (input) => {
6838
6838
  applyServerEnv(input.values);
6839
- const { serveCommand } = await import("./serve-C2TW7ZZC.js");
6839
+ const { serveCommand } = await import("./serve-XEQ7ZW4N.js");
6840
6840
  await serveCommand(input.format);
6841
6841
  }
6842
6842
  },
@@ -8144,8 +8144,8 @@ var AGENT_CLI_COMMANDS = [
8144
8144
  "timeout-ms": stringOption()
8145
8145
  },
8146
8146
  run: async (input) => {
8147
- const { coerceAgentProvider } = await import("./session-5MVIOTFY.js");
8148
- const { AERO_TOOL_PROFILES, isAeroToolProfile } = await import("./tools-NDQN64CH.js");
8147
+ const { coerceAgentProvider } = await import("./session-P5QHGJLK.js");
8148
+ const { AERO_TOOL_PROFILES, isAeroToolProfile } = await import("./tools-RGBSLMRZ.js");
8149
8149
  const { agentAsk } = await import("./agent-ask-KZTQLKGM.js");
8150
8150
  const usage = `canonry agent ask <project> "<prompt>" [--provider ${AGENT_PROVIDER_IDS.join("|")}] [--model <id>] [--scope all|read-only] [--profile default|ads-operator] [--context <json>] [--conversation <id>] [--max-tool-calls <n>] [--timeout-ms <ms>] [--format json]`;
8151
8151
  const project3 = requireProject(input, "agent.ask", usage);
@@ -23,11 +23,11 @@ import {
23
23
  createRunCompetitorResolver,
24
24
  readMarketCompetitorNames,
25
25
  refreshSnapshotMentionIdentity
26
- } from "./chunk-UX667IQM.js";
26
+ } from "./chunk-ATXHIX32.js";
27
27
  import {
28
28
  classifyAiUserFetch,
29
29
  classifyCrawler
30
- } from "./chunk-LSKAENOY.js";
30
+ } from "./chunk-OHOIEA3X.js";
31
31
  import {
32
32
  aiUserFetchEventsHourly,
33
33
  auditLog,
@@ -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-GCISXTKM.js");
440
+ const { IntelligenceService } = await import("./intelligence-service-FTCGYX6T.js");
441
441
  const config = loadConfig();
442
442
  const db = createClient(config.database);
443
443
  migrate(db);
@@ -27,14 +27,14 @@ import {
27
27
  resolveConfiguredAgentProvider,
28
28
  resolveSessionProviderAndModel,
29
29
  setAeroSystemPrompt
30
- } from "./chunk-CCJIMTYO.js";
30
+ } from "./chunk-MBNS5AND.js";
31
31
  import {
32
32
  AeroToolProfiles,
33
33
  AeroToolScopes,
34
34
  buildAeroStateTools,
35
35
  isAeroToolProfile,
36
36
  truncateToolResult
37
- } from "./chunk-YNPUS3Y7.js";
37
+ } from "./chunk-7A3CQCEV.js";
38
38
  import {
39
39
  getGoogleAuthConfig,
40
40
  getGoogleConnection,
@@ -162,7 +162,7 @@ import {
162
162
  addLogListener,
163
163
  createFastifyLogger,
164
164
  createLogger
165
- } from "./chunk-Q4JRFMCJ.js";
165
+ } from "./chunk-4E6E27C5.js";
166
166
  import {
167
167
  computeCitedCompetitorDomains,
168
168
  determineCitationState
@@ -285,7 +285,7 @@ import {
285
285
  webhookResponseReason,
286
286
  webhookTargetRefusalReason,
287
287
  writeAuditLog
288
- } from "./chunk-UX667IQM.js";
288
+ } from "./chunk-ATXHIX32.js";
289
289
  import {
290
290
  OperationalLogStore,
291
291
  SentimentIdempotencyConflict,
@@ -5658,7 +5658,7 @@ function nonBlank(value) {
5658
5658
  return trimmed ? trimmed : void 0;
5659
5659
  }
5660
5660
  function resolveBuildCommit(env = process.env) {
5661
- const embedded = true ? "b0ca3a066727ff72ac5be3b49ca7d7d95311d0e3" : void 0;
5661
+ const embedded = true ? "71e50cd654bc70374b8e8db96b43a7b7edc7da0d" : void 0;
5662
5662
  return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
5663
5663
  }
5664
5664
  function resolveInstanceIdentity(env = process.env) {
@@ -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-C2TW7ZZC.js");
50
+ const { serveCommand } = await import("./serve-XEQ7ZW4N.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  REGISTERED_CLI_COMMANDS
3
- } from "./chunk-MLXU4QOF.js";
3
+ } from "./chunk-PG6Q6MEF.js";
4
4
  import "./chunk-6GO5VVAC.js";
5
5
  import "./chunk-C3FQGQDS.js";
6
6
  import "./chunk-VJWDBFSL.js";
package/dist/cli.js CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node --import tsx
2
2
  import {
3
3
  REGISTERED_CLI_COMMANDS
4
- } from "./chunk-MLXU4QOF.js";
4
+ } from "./chunk-PG6Q6MEF.js";
5
5
  import {
6
6
  buildSetupState,
7
7
  runPendingServeHandoff
8
- } from "./chunk-DPRGW4BM.js";
8
+ } from "./chunk-ZOP2F25H.js";
9
9
  import "./chunk-6GO5VVAC.js";
10
10
  import "./chunk-C3FQGQDS.js";
11
11
  import "./chunk-VJWDBFSL.js";
@@ -7,8 +7,8 @@ import {
7
7
  } from "./chunk-HGMYEDAQ.js";
8
8
  import {
9
9
  anyUsersExist
10
- } from "./chunk-UX667IQM.js";
11
- import "./chunk-LSKAENOY.js";
10
+ } from "./chunk-ATXHIX32.js";
11
+ import "./chunk-OHOIEA3X.js";
12
12
  import "./chunk-ZTO5KPQB.js";
13
13
  import {
14
14
  createClient
@@ -40,7 +40,7 @@ function parseDemoTrustedProxies(values) {
40
40
  async function demoCommand(options) {
41
41
  const { host, port } = parseDemoListenOptions(options);
42
42
  const trustProxy = parseDemoTrustedProxies(options.trustProxy);
43
- const { createDemoServer } = await import("./demo-server-VD6C773Q.js");
43
+ const { createDemoServer } = await import("./demo-server-23QGNLCX.js");
44
44
  const app = await createDemoServer({ trustProxy });
45
45
  let stopping = false;
46
46
  const stop = () => {
@@ -18,15 +18,15 @@ import "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  HISTORY_WINDOW_RUNS,
20
20
  IntelligenceService
21
- } from "./chunk-Q4JRFMCJ.js";
21
+ } from "./chunk-4E6E27C5.js";
22
22
  import {
23
23
  determineCitationState
24
24
  } from "./chunk-KJA7V3IT.js";
25
25
  import {
26
26
  apiRoutes,
27
27
  assessConversionTrackingIntegrity
28
- } from "./chunk-UX667IQM.js";
29
- import "./chunk-LSKAENOY.js";
28
+ } from "./chunk-ATXHIX32.js";
29
+ import "./chunk-OHOIEA3X.js";
30
30
  import "./chunk-ZTO5KPQB.js";
31
31
  import {
32
32
  adsAdGroups,
package/dist/index.d.ts CHANGED
@@ -1402,7 +1402,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1402
1402
  languageCode: string;
1403
1403
  limit: number;
1404
1404
  scope: {
1405
- kind: "project" | "property" | "market" | "group";
1405
+ kind: "project" | "market" | "group" | "property";
1406
1406
  key?: string | undefined;
1407
1407
  expectedPlanRevision?: number | undefined;
1408
1408
  };
@@ -1432,7 +1432,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1432
1432
  languageCode: string;
1433
1433
  limit: number;
1434
1434
  scope: {
1435
- kind: "project" | "property" | "market" | "group";
1435
+ kind: "project" | "market" | "group" | "property";
1436
1436
  key?: string | undefined;
1437
1437
  expectedPlanRevision?: number | undefined;
1438
1438
  };
@@ -1614,7 +1614,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1614
1614
  languageCode: string;
1615
1615
  limit: number;
1616
1616
  scope: {
1617
- kind: "project" | "property" | "market" | "group";
1617
+ kind: "project" | "market" | "group" | "property";
1618
1618
  key?: string | undefined;
1619
1619
  expectedPlanRevision?: number | undefined;
1620
1620
  };
@@ -1644,7 +1644,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1644
1644
  languageCode: string;
1645
1645
  limit: number;
1646
1646
  scope: {
1647
- kind: "project" | "property" | "market" | "group";
1647
+ kind: "project" | "market" | "group" | "property";
1648
1648
  key?: string | undefined;
1649
1649
  expectedPlanRevision?: number | undefined;
1650
1650
  };
@@ -6779,7 +6779,7 @@ declare const providerBatches: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
6779
6779
  tableName: "provider_batches";
6780
6780
  dataType: "string";
6781
6781
  columnType: "SQLiteText";
6782
- data: "unknown" | "failed" | "submitted" | "submitting" | "ended" | "ingested" | "cancelled";
6782
+ data: "unknown" | "failed" | "submitted" | "cancelled" | "submitting" | "ended" | "ingested";
6783
6783
  driverParam: string;
6784
6784
  notNull: true;
6785
6785
  hasDefault: false;
@@ -6792,7 +6792,7 @@ declare const providerBatches: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
6792
6792
  generated: undefined;
6793
6793
  }, {}, {
6794
6794
  length: number | undefined;
6795
- $type: "unknown" | "failed" | "submitted" | "submitting" | "ended" | "ingested" | "cancelled";
6795
+ $type: "unknown" | "failed" | "submitted" | "cancelled" | "submitting" | "ended" | "ingested";
6796
6796
  }>;
6797
6797
  requestCount: drizzle_orm_sqlite_core.SQLiteColumn<{
6798
6798
  name: "request_count";
@@ -8839,7 +8839,7 @@ declare const oauthTokens: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
8839
8839
  tableName: "oauth_tokens";
8840
8840
  dataType: "string";
8841
8841
  columnType: "SQLiteText";
8842
- data: "refresh" | "access";
8842
+ data: "access" | "refresh";
8843
8843
  driverParam: string;
8844
8844
  notNull: true;
8845
8845
  hasDefault: false;
@@ -8852,7 +8852,7 @@ declare const oauthTokens: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
8852
8852
  generated: undefined;
8853
8853
  }, {}, {
8854
8854
  length: number | undefined;
8855
- $type: "refresh" | "access";
8855
+ $type: "access" | "refresh";
8856
8856
  }>;
8857
8857
  clientId: drizzle_orm_sqlite_core.SQLiteColumn<{
8858
8858
  name: "client_id";
@@ -17596,7 +17596,7 @@ declare const gaMeasurementSyncStates: drizzle_orm_sqlite_core.SQLiteTableWithCo
17596
17596
  tableName: "ga_measurement_sync_state";
17597
17597
  dataType: "string";
17598
17598
  columnType: "SQLiteText";
17599
- data: "error" | "never-synced" | "ready" | "unavailable";
17599
+ data: "error" | "unavailable" | "never-synced" | "ready";
17600
17600
  driverParam: string;
17601
17601
  notNull: true;
17602
17602
  hasDefault: true;
@@ -17609,7 +17609,7 @@ declare const gaMeasurementSyncStates: drizzle_orm_sqlite_core.SQLiteTableWithCo
17609
17609
  generated: undefined;
17610
17610
  }, {}, {
17611
17611
  length: number | undefined;
17612
- $type: "error" | "never-synced" | "ready" | "unavailable";
17612
+ $type: "error" | "unavailable" | "never-synced" | "ready";
17613
17613
  }>;
17614
17614
  searchLandingError: drizzle_orm_sqlite_core.SQLiteColumn<{
17615
17615
  name: "search_landing_error";
@@ -25387,7 +25387,7 @@ declare const researchRuns: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
25387
25387
  dataType: "json";
25388
25388
  columnType: "SQLiteTextJson";
25389
25389
  data: {
25390
- kind: "property" | "market";
25390
+ kind: "market" | "property";
25391
25391
  key: string;
25392
25392
  label: string;
25393
25393
  planRevision: number;
@@ -25404,7 +25404,7 @@ declare const researchRuns: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
25404
25404
  generated: undefined;
25405
25405
  }, {}, {
25406
25406
  $type: {
25407
- kind: "property" | "market";
25407
+ kind: "market" | "property";
25408
25408
  key: string;
25409
25409
  label: string;
25410
25410
  planRevision: number;
package/dist/index.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-HQGMIHG6.js";
6
+ } from "./chunk-VOWM62EC.js";
7
7
  import "./chunk-UJ222WSC.js";
8
- import "./chunk-CCJIMTYO.js";
9
- import "./chunk-YNPUS3Y7.js";
8
+ import "./chunk-MBNS5AND.js";
9
+ import "./chunk-7A3CQCEV.js";
10
10
  import "./chunk-ELCLGWUT.js";
11
11
  import "./chunk-XEBKF4N5.js";
12
12
  import "./chunk-PNZE3XLO.js";
@@ -28,10 +28,10 @@ import "./chunk-VMLCPTRZ.js";
28
28
  import "./chunk-VL5LVBLE.js";
29
29
  import "./chunk-AOJU5LKX.js";
30
30
  import "./chunk-HGMYEDAQ.js";
31
- import "./chunk-Q4JRFMCJ.js";
31
+ import "./chunk-4E6E27C5.js";
32
32
  import "./chunk-KJA7V3IT.js";
33
- import "./chunk-UX667IQM.js";
34
- import "./chunk-LSKAENOY.js";
33
+ import "./chunk-ATXHIX32.js";
34
+ import "./chunk-OHOIEA3X.js";
35
35
  import "./chunk-ZTO5KPQB.js";
36
36
  import "./chunk-NCUTFEU4.js";
37
37
  import "./chunk-YVYID65D.js";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  buildSetupState,
9
9
  queueServeHandoff
10
- } from "./chunk-DPRGW4BM.js";
10
+ } from "./chunk-ZOP2F25H.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
12
  import "./chunk-73QOQIFZ.js";
13
13
  import "./chunk-WODZX4Y6.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  HISTORY_WINDOW_RUNS,
3
3
  IntelligenceService
4
- } from "./chunk-Q4JRFMCJ.js";
4
+ } from "./chunk-4E6E27C5.js";
5
5
  import "./chunk-KJA7V3IT.js";
6
- import "./chunk-UX667IQM.js";
7
- import "./chunk-LSKAENOY.js";
6
+ import "./chunk-ATXHIX32.js";
7
+ import "./chunk-OHOIEA3X.js";
8
8
  import "./chunk-ZTO5KPQB.js";
9
9
  import "./chunk-NCUTFEU4.js";
10
10
  import "./chunk-YVYID65D.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  backfillAiReferralPaths,
3
3
  backfillNormalizedPaths
4
- } from "./chunk-NYTPS5WW.js";
4
+ } from "./chunk-QGDFDP3H.js";
5
5
  import {
6
6
  operatorHttpUrl
7
7
  } from "./chunk-6GO5VVAC.js";
@@ -9,10 +9,10 @@ import {
9
9
  allowsKeylessFirstRunSetup,
10
10
  createServer,
11
11
  waitForServerRuntimeStartup
12
- } from "./chunk-HQGMIHG6.js";
12
+ } from "./chunk-VOWM62EC.js";
13
13
  import "./chunk-UJ222WSC.js";
14
- import "./chunk-CCJIMTYO.js";
15
- import "./chunk-YNPUS3Y7.js";
14
+ import "./chunk-MBNS5AND.js";
15
+ import "./chunk-7A3CQCEV.js";
16
16
  import "./chunk-ELCLGWUT.js";
17
17
  import "./chunk-XEBKF4N5.js";
18
18
  import "./chunk-PNZE3XLO.js";
@@ -56,13 +56,13 @@ import {
56
56
  CliError,
57
57
  isMachineFormat
58
58
  } from "./chunk-HGMYEDAQ.js";
59
- import "./chunk-Q4JRFMCJ.js";
59
+ import "./chunk-4E6E27C5.js";
60
60
  import "./chunk-KJA7V3IT.js";
61
61
  import {
62
62
  refreshSnapshotMentionIdentity,
63
63
  snapshotsWithSentimentResults
64
- } from "./chunk-UX667IQM.js";
65
- import "./chunk-LSKAENOY.js";
64
+ } from "./chunk-ATXHIX32.js";
65
+ import "./chunk-OHOIEA3X.js";
66
66
  import "./chunk-ZTO5KPQB.js";
67
67
  import {
68
68
  createClient,
@@ -10,8 +10,8 @@ import {
10
10
  resolveAeroSkillDir,
11
11
  resolveConfiguredAgentProvider,
12
12
  resolveSessionProviderAndModel
13
- } from "./chunk-CCJIMTYO.js";
14
- import "./chunk-YNPUS3Y7.js";
13
+ } from "./chunk-MBNS5AND.js";
14
+ import "./chunk-7A3CQCEV.js";
15
15
  import "./chunk-NCIPNVD6.js";
16
16
  import "./chunk-RR7ZDGC7.js";
17
17
  import {
@@ -24,8 +24,8 @@ import "./chunk-VMLCPTRZ.js";
24
24
  import "./chunk-VL5LVBLE.js";
25
25
  import "./chunk-AOJU5LKX.js";
26
26
  import "./chunk-HGMYEDAQ.js";
27
- import "./chunk-UX667IQM.js";
28
- import "./chunk-LSKAENOY.js";
27
+ import "./chunk-ATXHIX32.js";
28
+ import "./chunk-OHOIEA3X.js";
29
29
  import "./chunk-ZTO5KPQB.js";
30
30
  import "./chunk-NCUTFEU4.js";
31
31
  import "./chunk-YVYID65D.js";
@@ -11,7 +11,7 @@ import {
11
11
  buildAllTools,
12
12
  buildReadTools,
13
13
  isAeroToolProfile
14
- } from "./chunk-YNPUS3Y7.js";
14
+ } from "./chunk-7A3CQCEV.js";
15
15
  import "./chunk-RR7ZDGC7.js";
16
16
  import "./chunk-22XKOBJD.js";
17
17
  import "./chunk-QT7UBYG7.js";
@@ -19,8 +19,8 @@ import "./chunk-VMLCPTRZ.js";
19
19
  import "./chunk-VL5LVBLE.js";
20
20
  import "./chunk-AOJU5LKX.js";
21
21
  import "./chunk-HGMYEDAQ.js";
22
- import "./chunk-UX667IQM.js";
23
- import "./chunk-LSKAENOY.js";
22
+ import "./chunk-ATXHIX32.js";
23
+ import "./chunk-OHOIEA3X.js";
24
24
  import "./chunk-ZTO5KPQB.js";
25
25
  import "./chunk-NCUTFEU4.js";
26
26
  import "./chunk-YVYID65D.js";
@@ -23,7 +23,7 @@ import {
23
23
  DEFAULT_BOT_LIST,
24
24
  generateWorkerScript,
25
25
  generateWranglerToml
26
- } from "./chunk-LSKAENOY.js";
26
+ } from "./chunk-OHOIEA3X.js";
27
27
  import {
28
28
  RunStatuses,
29
29
  TrafficEventKinds,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonry/canonry",
3
- "version": "7.64.3",
3
+ "version": "7.64.4",
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": [