@canonry/canonry 5.33.0 → 6.0.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 (40) hide show
  1. package/assets/agent-workspace/skills/aero/references/portfolio-analysis.md +15 -3
  2. package/assets/agent-workspace/skills/canonry/references/aeo-analysis.md +1 -1
  3. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +16 -11
  4. package/assets/assets/{AuditHistoryPanel-CcCIqJzU.js → AuditHistoryPanel-Bz2NVB6-.js} +1 -1
  5. package/assets/assets/{BacklinksPage-B4r9SLIP.js → BacklinksPage-Dte5-usf.js} +1 -1
  6. package/assets/assets/{HistoryPage-DIpbpqWc.js → HistoryPage-C1S4nw3I.js} +1 -1
  7. package/assets/assets/{MeasurementPropertyPage-BF93li8O.js → MeasurementPropertyPage-DWjsHZdt.js} +1 -1
  8. package/assets/assets/ProjectPage-CAJ9XvNt.js +8 -0
  9. package/assets/assets/RunsPage-D9wEJFfV.js +1 -0
  10. package/assets/assets/SettingsPage-CN3Gew7Y.js +1 -0
  11. package/assets/assets/SiteHealthSection-Bft5TfoU.js +4 -0
  12. package/assets/assets/TrafficPage-tkNvySQH.js +40 -0
  13. package/assets/assets/{TrafficSourceDetailPage-psddSEHZ.js → TrafficSourceDetailPage-RhRfPizo.js} +1 -1
  14. package/assets/assets/{extract-error-message-BbHnZTOx.js → extract-error-message-tfl_SU7q.js} +1 -1
  15. package/assets/assets/index-B11OXdEC.css +1 -0
  16. package/assets/assets/index-Cu_xgdb1.js +86 -0
  17. package/assets/assets/{react-sigma_core.esm.min-6EgecOc3.js → react-sigma_core.esm.min-BUu3mcQJ.js} +1 -1
  18. package/assets/assets/{v2-overview-adapter-0pVxmjG8.js → v2-overview-adapter-CzeGhaXn.js} +1 -1
  19. package/assets/index.html +2 -2
  20. package/dist/{chunk-UDEZZMV5.js → chunk-4NC5ZAC2.js} +3 -3
  21. package/dist/{chunk-AQFRQTKY.js → chunk-6M7HSNXJ.js} +2 -2
  22. package/dist/{chunk-XICZEXE5.js → chunk-F4G7I7T7.js} +23 -135
  23. package/dist/{chunk-SJX7XJB6.js → chunk-HAALQW4R.js} +121 -18
  24. package/dist/{chunk-Y23FQK6O.js → chunk-K4356AGP.js} +10 -10
  25. package/dist/{chunk-G3CMWO26.js → chunk-XGERCNUR.js} +6 -3
  26. package/dist/{chunk-GIKWL2BQ.js → chunk-ZO62Z2WN.js} +137 -21
  27. package/dist/cli.js +52 -16
  28. package/dist/{demo-server-G4BFXA6G.js → demo-server-54OUTZMY.js} +4 -4
  29. package/dist/index.js +6 -6
  30. package/dist/{intelligence-service-FVOFIJP3.js → intelligence-service-MEIAMMLT.js} +2 -2
  31. package/dist/mcp.js +4 -4
  32. package/package.json +14 -14
  33. package/assets/assets/ProjectPage-CjadJKsG.js +0 -8
  34. package/assets/assets/RunRow-C-d8luIA.js +0 -1
  35. package/assets/assets/RunsPage-DEbjaNYY.js +0 -1
  36. package/assets/assets/SettingsPage-B5h3wM7i.js +0 -1
  37. package/assets/assets/SiteHealthSection-Cj2lo1GY.js +0 -4
  38. package/assets/assets/TrafficPage-CFDh9Rx4.js +0 -40
  39. package/assets/assets/index-CiWV331j.js +0 -86
  40. package/assets/assets/index-DX5M4MHr.css +0 -1
package/dist/cli.js CHANGED
@@ -35,11 +35,11 @@ import {
35
35
  trackCliCommandFinished,
36
36
  trackEvent,
37
37
  waitForServerRuntimeStartup
38
- } from "./chunk-XICZEXE5.js";
38
+ } from "./chunk-F4G7I7T7.js";
39
39
  import {
40
40
  autoSyncSkills,
41
41
  formatAutoSyncNotice
42
- } from "./chunk-UDEZZMV5.js";
42
+ } from "./chunk-4NC5ZAC2.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-G3CMWO26.js";
59
+ } from "./chunk-XGERCNUR.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-AQFRQTKY.js";
65
+ import "./chunk-6M7HSNXJ.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-Y23FQK6O.js";
77
+ } from "./chunk-K4356AGP.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-GIKWL2BQ.js";
92
+ } from "./chunk-ZO62Z2WN.js";
93
93
  import {
94
94
  AdsDeliverySnapshotStatuses,
95
95
  AdsHistoricalCampaignRollupStatuses,
@@ -151,6 +151,7 @@ import {
151
151
  formatSignedPointDelta,
152
152
  gbpNegativeReviewMaxStarsSchema,
153
153
  googleAdsMetricsWindowSchema,
154
+ isRetiredAgentProviderId,
154
155
  isVisibilityCompareClassMetric,
155
156
  logQuerySchema,
156
157
  measurementChangesQuerySchema,
@@ -179,6 +180,7 @@ import {
179
180
  reportUnattributedAnswers,
180
181
  researchBatchCreateSchema,
181
182
  resolveNegativeReviewMaxStars,
183
+ resolveProjectQualifiedAliases,
182
184
  resolveProviderInput,
183
185
  resultsClearRequestSchema,
184
186
  sentimentBackfillRequestSchema,
@@ -194,7 +196,7 @@ import {
194
196
  visibilityCompareSelectionSchema,
195
197
  visibilityReportRequestSchema,
196
198
  winnabilityClassSchema
197
- } from "./chunk-SJX7XJB6.js";
199
+ } from "./chunk-HAALQW4R.js";
198
200
 
199
201
  // src/cli.ts
200
202
  import { pathToFileURL } from "url";
@@ -720,7 +722,7 @@ function parseDemoTrustedProxies(values) {
720
722
  async function demoCommand(options) {
721
723
  const { host, port } = parseDemoListenOptions(options);
722
724
  const trustProxy = parseDemoTrustedProxies(options.trustProxy);
723
- const { createDemoServer } = await import("./demo-server-G4BFXA6G.js");
725
+ const { createDemoServer } = await import("./demo-server-54OUTZMY.js");
724
726
  const app = await createDemoServer({ trustProxy });
725
727
  let stopping = false;
726
728
  const stop = () => {
@@ -11824,7 +11826,7 @@ Citation Rate Trends (${data.window})`);
11824
11826
  for (const [provider, served] of servedEntries) {
11825
11827
  const rawIds = served.latestServedModelIds.length > 0 ? served.latestServedModelIds.join(", ") : formatModelEvidence(served.latestObservation.state);
11826
11828
  const substituted = mismatch[provider];
11827
- const note = substituted ? ` \u2014 not the ${formatModelEvidence(substituted.configured)} you selected` : "";
11829
+ const note = substituted ? ` (not the ${formatModelEvidence(substituted.configured)} you selected)` : "";
11828
11830
  console.log(` ${provider}: ${rawIds} at ${served.latestObservation.observedAt}${note}`);
11829
11831
  for (const event of served.events) {
11830
11832
  const dating = event.fromPreWindowAnchor ? " (on or before)" : "";
@@ -12427,6 +12429,7 @@ async function createProject(name, opts) {
12427
12429
  canonicalDomain: opts.domain,
12428
12430
  ownedDomains: opts.ownedDomains ?? [],
12429
12431
  aliases: normalizeProjectAliases(opts.displayName, opts.aliases ?? []),
12432
+ ...opts.qualifiedAliases?.length ? { qualifiedAliases: opts.qualifiedAliases } : {},
12430
12433
  country: opts.country,
12431
12434
  language: opts.language,
12432
12435
  providers: opts.providers ?? [],
@@ -12479,6 +12482,9 @@ async function listProjects(format) {
12479
12482
  );
12480
12483
  }
12481
12484
  }
12485
+ function storedQualifiedAliases(project2) {
12486
+ return project2.qualifiedAliases ?? [];
12487
+ }
12482
12488
  async function showProject(name, format) {
12483
12489
  const client = getClient22();
12484
12490
  const project2 = await client.getProject(name);
@@ -12498,6 +12504,10 @@ async function showProject(name, format) {
12498
12504
  if (project2.aliases && project2.aliases.length > 0) {
12499
12505
  console.log(` Aliases: ${project2.aliases.join(", ")}`);
12500
12506
  }
12507
+ const qualifiedAliases = storedQualifiedAliases(project2);
12508
+ if (qualifiedAliases.length > 0) {
12509
+ console.log(` Qualified: ${qualifiedAliases.join(", ")} (sentiment)`);
12510
+ }
12501
12511
  console.log(` Country: ${project2.country}`);
12502
12512
  console.log(` Language: ${project2.language}`);
12503
12513
  console.log(` Config source: ${project2.configSource}`);
@@ -12537,6 +12547,24 @@ async function updateProjectSettings(name, opts) {
12537
12547
  const toRemove = new Set(opts.removeAlias.map((a) => a.toLowerCase()));
12538
12548
  aliases = aliases.filter((a) => !toRemove.has(a.toLowerCase()));
12539
12549
  }
12550
+ const nextAliases = normalizeProjectAliases(nextDisplayName, aliases);
12551
+ const touchesQualified = (opts.addQualifiedAlias?.length ?? 0) > 0 || (opts.removeQualifiedAlias?.length ?? 0) > 0;
12552
+ let qualifiedAliases = resolveProjectQualifiedAliases(
12553
+ { displayName: nextDisplayName, aliases: nextAliases },
12554
+ storedQualifiedAliases(project2)
12555
+ ).value;
12556
+ if (opts.addQualifiedAlias) {
12557
+ const existingKeys = new Set(qualifiedAliases.map((alias) => alias.toLowerCase()));
12558
+ for (const alias of opts.addQualifiedAlias) {
12559
+ if (existingKeys.has(alias.toLowerCase())) continue;
12560
+ existingKeys.add(alias.toLowerCase());
12561
+ qualifiedAliases = [...qualifiedAliases, alias];
12562
+ }
12563
+ }
12564
+ if (opts.removeQualifiedAlias) {
12565
+ const toRemove = new Set(opts.removeQualifiedAlias.map((alias) => alias.toLowerCase()));
12566
+ qualifiedAliases = qualifiedAliases.filter((alias) => !toRemove.has(alias.toLowerCase()));
12567
+ }
12540
12568
  const providerModels = { ...project2.providerModels ?? {}, ...opts.providerModels ?? {} };
12541
12569
  for (const provider of opts.clearProviderModels ?? []) delete providerModels[provider];
12542
12570
  const nextProviders = opts.providers ?? project2.providers ?? [];
@@ -12559,7 +12587,8 @@ async function updateProjectSettings(name, opts) {
12559
12587
  displayName: nextDisplayName,
12560
12588
  canonicalDomain: opts.domain ?? project2.canonicalDomain,
12561
12589
  ownedDomains,
12562
- aliases: normalizeProjectAliases(nextDisplayName, aliases),
12590
+ aliases: nextAliases,
12591
+ ...touchesQualified ? { qualifiedAliases } : {},
12563
12592
  country: opts.country ?? project2.country,
12564
12593
  language: opts.language ?? project2.language,
12565
12594
  tags: project2.tags,
@@ -12687,12 +12716,13 @@ async function setDefaultLocation(project2, label, format) {
12687
12716
  var PROJECT_CLI_COMMANDS = [
12688
12717
  {
12689
12718
  path: ["project", "create"],
12690
- usage: "canonry project create <name> [--domain <domain>] [--owned-domain <domain>...] [--alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--provider-model provider=model...] [--dispatch-mode provider=sync|batch...] [--format json]",
12719
+ usage: "canonry project create <name> [--domain <domain>] [--owned-domain <domain>...] [--alias <name>...] [--qualified-alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--provider-model provider=model...] [--dispatch-mode provider=sync|batch...] [--format json]",
12691
12720
  help: "Create a project. Pass --domain for the public site to scan. Provider credentials are not required for Page Health.",
12692
12721
  options: {
12693
12722
  domain: { type: "string", short: "d" },
12694
12723
  "owned-domain": multiStringOption(),
12695
12724
  alias: multiStringOption(),
12725
+ "qualified-alias": multiStringOption(),
12696
12726
  country: stringOption(),
12697
12727
  language: stringOption(),
12698
12728
  "display-name": stringOption(),
@@ -12704,12 +12734,13 @@ var PROJECT_CLI_COMMANDS = [
12704
12734
  const name = requireProject(
12705
12735
  input,
12706
12736
  "project.create",
12707
- "canonry project create <name> [--domain <domain>] [--owned-domain <domain>...] [--alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--provider-model provider=model...] [--dispatch-mode provider=sync|batch...] [--format json]"
12737
+ "canonry project create <name> [--domain <domain>] [--owned-domain <domain>...] [--alias <name>...] [--qualified-alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--provider-model provider=model...] [--dispatch-mode provider=sync|batch...] [--format json]"
12708
12738
  );
12709
12739
  await createProject(name, {
12710
12740
  domain: getString(input.values, "domain") ?? name,
12711
12741
  ownedDomains: getStringArray(input.values, "owned-domain") ?? [],
12712
12742
  aliases: getStringArray(input.values, "alias") ?? [],
12743
+ qualifiedAliases: getStringArray(input.values, "qualified-alias") ?? [],
12713
12744
  country: getString(input.values, "country") ?? "US",
12714
12745
  language: getString(input.values, "language") ?? "en",
12715
12746
  displayName: getString(input.values, "display-name") ?? name,
@@ -12722,7 +12753,7 @@ var PROJECT_CLI_COMMANDS = [
12722
12753
  },
12723
12754
  {
12724
12755
  path: ["project", "update"],
12725
- usage: "canonry project update <name> [--domain <domain>] [--owned-domain <domain>...] [--add-domain <domain>...] [--remove-domain <domain>...] [--alias <name>...] [--add-alias <name>...] [--remove-alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--all-providers] [--provider-model provider=model...] [--clear-provider-model <provider>...] [--dispatch-mode provider=sync|batch...] [--clear-dispatch-mode <provider>...] [--negative-review-max-stars <1-4|default>] [--format json]",
12756
+ usage: "canonry project update <name> [--domain <domain>] [--owned-domain <domain>...] [--add-domain <domain>...] [--remove-domain <domain>...] [--alias <name>...] [--add-alias <name>...] [--remove-alias <name>...] [--add-qualified-alias <name>...] [--remove-qualified-alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--all-providers] [--provider-model provider=model...] [--clear-provider-model <provider>...] [--dispatch-mode provider=sync|batch...] [--clear-dispatch-mode <provider>...] [--negative-review-max-stars <1-4|default>] [--format json]",
12726
12757
  options: {
12727
12758
  domain: { type: "string", short: "d" },
12728
12759
  "owned-domain": multiStringOption(),
@@ -12731,6 +12762,8 @@ var PROJECT_CLI_COMMANDS = [
12731
12762
  alias: multiStringOption(),
12732
12763
  "add-alias": multiStringOption(),
12733
12764
  "remove-alias": multiStringOption(),
12765
+ "add-qualified-alias": multiStringOption(),
12766
+ "remove-qualified-alias": multiStringOption(),
12734
12767
  country: stringOption(),
12735
12768
  language: stringOption(),
12736
12769
  "display-name": stringOption(),
@@ -12746,7 +12779,7 @@ var PROJECT_CLI_COMMANDS = [
12746
12779
  const name = requireProject(
12747
12780
  input,
12748
12781
  "project.update",
12749
- "canonry project update <name> [--domain <domain>] [--owned-domain <domain>...] [--add-domain <domain>...] [--remove-domain <domain>...] [--alias <name>...] [--add-alias <name>...] [--remove-alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--all-providers] [--provider-model provider=model...] [--clear-provider-model <provider>...] [--dispatch-mode provider=sync|batch...] [--clear-dispatch-mode <provider>...] [--negative-review-max-stars <1-4|default>] [--format json]"
12782
+ "canonry project update <name> [--domain <domain>] [--owned-domain <domain>...] [--add-domain <domain>...] [--remove-domain <domain>...] [--alias <name>...] [--add-alias <name>...] [--remove-alias <name>...] [--add-qualified-alias <name>...] [--remove-qualified-alias <name>...] [--country <code>] [--language <lang>] [--display-name <name>] [--provider <name>...] [--all-providers] [--provider-model provider=model...] [--clear-provider-model <provider>...] [--dispatch-mode provider=sync|batch...] [--clear-dispatch-mode <provider>...] [--negative-review-max-stars <1-4|default>] [--format json]"
12750
12783
  );
12751
12784
  const providers = getStringArray(input.values, "provider");
12752
12785
  const allProviders = getBoolean(input.values, "all-providers");
@@ -12770,6 +12803,8 @@ var PROJECT_CLI_COMMANDS = [
12770
12803
  aliases: getStringArray(input.values, "alias"),
12771
12804
  addAlias: getStringArray(input.values, "add-alias"),
12772
12805
  removeAlias: getStringArray(input.values, "remove-alias"),
12806
+ addQualifiedAlias: getStringArray(input.values, "add-qualified-alias"),
12807
+ removeQualifiedAlias: getStringArray(input.values, "remove-qualified-alias"),
12773
12808
  country: getString(input.values, "country"),
12774
12809
  language: getString(input.values, "language"),
12775
12810
  providers: allProviders ? [] : providers,
@@ -19840,9 +19875,10 @@ Usage: ${usage}`, {
19840
19875
  }
19841
19876
  const providerInput = getString(input.values, "provider");
19842
19877
  if (providerInput && !coerceAgentProvider(providerInput)) {
19843
- throw usageError(`Error: --provider must be one of: ${listAgentProviders().join(", ")}
19878
+ const message = isRetiredAgentProviderId(providerInput) ? `--provider ${providerInput} was removed; use one of: ${listAgentProviders().join(", ")}` : `--provider must be one of: ${listAgentProviders().join(", ")}`;
19879
+ throw usageError(`Error: ${message}
19844
19880
  Usage: ${usage}`, {
19845
- message: `--provider must be one of: ${listAgentProviders().join(", ")}`,
19881
+ message,
19846
19882
  details: {
19847
19883
  command: "agent.ask",
19848
19884
  usage,
@@ -5,11 +5,11 @@ import {
5
5
  computeFactorAverages,
6
6
  layoutSiteCrawlGraphInput,
7
7
  persistSiteCrawlGraphLayout
8
- } from "./chunk-AQFRQTKY.js";
8
+ } from "./chunk-6M7HSNXJ.js";
9
9
  import {
10
10
  PACKAGE_VERSION,
11
11
  canonryMcpTools
12
- } from "./chunk-Y23FQK6O.js";
12
+ } from "./chunk-K4356AGP.js";
13
13
  import {
14
14
  HISTORY_WINDOW_RUNS,
15
15
  IntelligenceService,
@@ -85,7 +85,7 @@ import {
85
85
  siteCrawlPages,
86
86
  siteCrawlSnapshots,
87
87
  trafficSources
88
- } from "./chunk-GIKWL2BQ.js";
88
+ } from "./chunk-ZO62Z2WN.js";
89
89
  import {
90
90
  RunKinds,
91
91
  SiteCrawlFetchStates,
@@ -112,7 +112,7 @@ import {
112
112
  roundPreservingTotal,
113
113
  siteAuditPageFactorSchema,
114
114
  wilsonInterval
115
- } from "./chunk-SJX7XJB6.js";
115
+ } from "./chunk-HAALQW4R.js";
116
116
 
117
117
  // src/demo-server.ts
118
118
  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-XICZEXE5.js";
6
+ } from "./chunk-F4G7I7T7.js";
7
7
  import {
8
8
  loadConfig
9
- } from "./chunk-G3CMWO26.js";
10
- import "./chunk-AQFRQTKY.js";
11
- import "./chunk-Y23FQK6O.js";
12
- import "./chunk-GIKWL2BQ.js";
13
- import "./chunk-SJX7XJB6.js";
9
+ } from "./chunk-XGERCNUR.js";
10
+ import "./chunk-6M7HSNXJ.js";
11
+ import "./chunk-K4356AGP.js";
12
+ import "./chunk-ZO62Z2WN.js";
13
+ import "./chunk-HAALQW4R.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-GIKWL2BQ.js";
5
- import "./chunk-SJX7XJB6.js";
4
+ } from "./chunk-ZO62Z2WN.js";
5
+ import "./chunk-HAALQW4R.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-UDEZZMV5.js";
3
+ } from "./chunk-4NC5ZAC2.js";
4
4
  import {
5
5
  createApiClient,
6
6
  createCanonryMcpServer
7
- } from "./chunk-G3CMWO26.js";
8
- import "./chunk-Y23FQK6O.js";
7
+ } from "./chunk-XGERCNUR.js";
8
+ import "./chunk-K4356AGP.js";
9
9
  import {
10
10
  isReadOnlyKey,
11
11
  updateCheckEnvOptOut
12
- } from "./chunk-SJX7XJB6.js";
12
+ } from "./chunk-HAALQW4R.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.33.0",
3
+ "version": "6.0.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": [
@@ -86,33 +86,33 @@
86
86
  "tsup": "^8.5.1",
87
87
  "tsx": "^4.19.0",
88
88
  "@ainyc/canonry-web": "0.0.0",
89
- "@ainyc/canonry-api-client": "0.0.0",
90
- "@ainyc/canonry-api-routes": "0.0.0",
91
89
  "@ainyc/canonry-config": "0.0.0",
90
+ "@ainyc/canonry-api-client": "0.0.0",
92
91
  "@ainyc/canonry-contracts": "0.0.0",
92
+ "@ainyc/canonry-api-routes": "0.0.0",
93
93
  "@ainyc/canonry-db": "0.0.0",
94
- "@ainyc/canonry-integration-bing": "0.0.0",
95
94
  "@ainyc/canonry-integration-cloud-run": "0.0.0",
96
- "@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
97
95
  "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
96
+ "@ainyc/canonry-integration-commoncrawl": "0.0.0",
98
97
  "@ainyc/canonry-integration-google": "0.0.0",
99
98
  "@ainyc/canonry-integration-google-ads": "0.0.0",
100
- "@ainyc/canonry-integration-google-places": "0.0.0",
99
+ "@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
100
+ "@ainyc/canonry-integration-bing": "0.0.0",
101
101
  "@ainyc/canonry-integration-google-business-profile": "0.0.0",
102
+ "@ainyc/canonry-integration-google-places": "0.0.0",
102
103
  "@ainyc/canonry-integration-google-tag-manager": "0.0.0",
104
+ "@ainyc/canonry-intelligence": "0.0.0",
103
105
  "@ainyc/canonry-integration-openai-ads": "0.0.0",
104
- "@ainyc/canonry-integration-commoncrawl": "0.0.0",
105
- "@ainyc/canonry-integration-traffic": "0.0.0",
106
106
  "@ainyc/canonry-integration-wordpress": "0.0.0",
107
- "@ainyc/canonry-intelligence": "0.0.0",
107
+ "@ainyc/canonry-integration-traffic": "0.0.0",
108
108
  "@ainyc/canonry-provider-cdp": "0.0.0",
109
- "@ainyc/canonry-provider-local": "0.0.0",
110
- "@ainyc/canonry-provider-muse": "0.0.0",
111
- "@ainyc/canonry-provider-openai": "0.0.0",
112
109
  "@ainyc/canonry-provider-claude": "0.0.0",
113
110
  "@ainyc/canonry-provider-gemini": "0.0.0",
114
- "@ainyc/canonry-provider-perplexity": "0.0.0",
115
- "@ainyc/canonry-integration-typesafe": "0.0.0"
111
+ "@ainyc/canonry-provider-muse": "0.0.0",
112
+ "@ainyc/canonry-provider-local": "0.0.0",
113
+ "@ainyc/canonry-provider-openai": "0.0.0",
114
+ "@ainyc/canonry-integration-typesafe": "0.0.0",
115
+ "@ainyc/canonry-provider-perplexity": "0.0.0"
116
116
  },
117
117
  "scripts": {
118
118
  "build": "pnpm run build:cli && pnpm run build:web",