@canonry/canonry 4.161.0 → 4.162.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 (28) hide show
  1. package/assets/assets/{AuditHistoryPanel-C_1twF00.js → AuditHistoryPanel-BTtqk1mK.js} +1 -1
  2. package/assets/assets/{BacklinksPage-CfAuMCaN.js → BacklinksPage-wqRYkJFG.js} +1 -1
  3. package/assets/assets/ChartPrimitives-BoYe2M-i.js +1 -0
  4. package/assets/assets/{HistoryPage-DrRxOL3j.js → HistoryPage-Dj1FU5WV.js} +1 -1
  5. package/assets/assets/{MeasurementPropertyPage-BFtxx5Jw.js → MeasurementPropertyPage-CPCYzznG.js} +1 -1
  6. package/assets/assets/ProjectPage-7vg1El9D.js +9 -0
  7. package/assets/assets/{RunRow-DVZXibR2.js → RunRow-CTgtgq5x.js} +1 -1
  8. package/assets/assets/{RunsPage-CAUMy7By.js → RunsPage-qS7etC5f.js} +1 -1
  9. package/assets/assets/{SettingsPage-CcSOmQAl.js → SettingsPage-BlUWPiA7.js} +1 -1
  10. package/assets/assets/{SiteHealthSection-DYjEWd1I.js → SiteHealthSection-tUFchSy-.js} +3 -3
  11. package/assets/assets/{TrafficPage-BWM33jnJ.js → TrafficPage-BSWUsXM1.js} +1 -1
  12. package/assets/assets/{TrafficSourceDetailPage-DvEZ_JGY.js → TrafficSourceDetailPage-DOTtU4SK.js} +1 -1
  13. package/assets/assets/{extract-error-message-CnKOJkYB.js → extract-error-message-DOWCsWL0.js} +1 -1
  14. package/assets/assets/{index-CQGAqmDx.js → index-BYGqta_M.js} +20 -20
  15. package/assets/assets/{index-CACRaOmZ.css → index-CHluSPlN.css} +1 -1
  16. package/assets/assets/{react-sigma_core.esm.min-CHCAIMBW.js → react-sigma_core.esm.min-C4kgfZfm.js} +1 -1
  17. package/assets/index.html +2 -2
  18. package/dist/{chunk-HCGTKQCG.js → chunk-2TLRE2L3.js} +1 -1
  19. package/dist/{chunk-J27J2DF6.js → chunk-C6ZZH3XI.js} +36 -3
  20. package/dist/{chunk-W6OWEPZG.js → chunk-FZAAGXTK.js} +4 -4
  21. package/dist/{chunk-EXDO7EPL.js → chunk-NG7OR6GO.js} +3335 -3223
  22. package/dist/cli.js +29 -8
  23. package/dist/index.js +4 -4
  24. package/dist/{intelligence-service-HKDIVTZB.js → intelligence-service-ANRFEQWX.js} +2 -2
  25. package/dist/mcp.js +2 -2
  26. package/package.json +10 -10
  27. package/assets/assets/ChartPrimitives-DXVLCdBi.js +0 -1
  28. package/assets/assets/ProjectPage-Djvhx4HD.js +0 -12
package/dist/cli.js CHANGED
@@ -31,7 +31,7 @@ import {
31
31
  showFirstRunNotice,
32
32
  trackCliCommandFinished,
33
33
  trackEvent
34
- } from "./chunk-W6OWEPZG.js";
34
+ } from "./chunk-FZAAGXTK.js";
35
35
  import {
36
36
  CliError,
37
37
  EXIT_SYSTEM_ERROR,
@@ -51,7 +51,7 @@ import {
51
51
  saveConfigPatch,
52
52
  systemError,
53
53
  usageError
54
- } from "./chunk-HCGTKQCG.js";
54
+ } from "./chunk-2TLRE2L3.js";
55
55
  import {
56
56
  CLOUDFLARE_WORKER_BINDINGS,
57
57
  CLOUDFLARE_WORKER_GENERATED_MARKER,
@@ -65,7 +65,7 @@ import {
65
65
  projects,
66
66
  queries,
67
67
  renderReportHtml
68
- } from "./chunk-J27J2DF6.js";
68
+ } from "./chunk-C6ZZH3XI.js";
69
69
  import {
70
70
  AdsDeliverySnapshotStatuses,
71
71
  AdsHistoricalCampaignRollupStatuses,
@@ -129,7 +129,7 @@ import {
129
129
  providerQuotaPolicySchema,
130
130
  resolveProviderInput,
131
131
  winnabilityClassSchema
132
- } from "./chunk-EXDO7EPL.js";
132
+ } from "./chunk-NG7OR6GO.js";
133
133
 
134
134
  // src/cli.ts
135
135
  import { pathToFileURL } from "url";
@@ -7099,7 +7099,7 @@ async function googlePerformanceDaily(project, opts) {
7099
7099
  console.log('No GSC data found in this window. Run "canonry google sync" first.');
7100
7100
  return;
7101
7101
  }
7102
- const { clicks, impressions, ctr, days } = data.totals;
7102
+ const { clicks, impressions, ctr, position, days } = data.totals;
7103
7103
  const win = data.window;
7104
7104
  const range = win?.startDate && win.endDate ? ` ${win.startDate} to ${win.endDate}` : "";
7105
7105
  console.log(`GSC daily summary (${days} day${days === 1 ? "" : "s"}${range}):
@@ -7115,12 +7115,33 @@ async function googlePerformanceDaily(project, opts) {
7115
7115
  console.log(` Clicks: ${clicks.toLocaleString()}`);
7116
7116
  console.log(` Impressions: ${impressions.toLocaleString()}`);
7117
7117
  console.log(` CTR: ${(ctr * 100).toFixed(2)}%`);
7118
+ console.log(` Position: ${position == null ? "\u2014" : position.toFixed(1)}`);
7119
+ const fits = data.trends;
7120
+ const trendLines = [];
7121
+ for (const [label, trend, fmt] of [
7122
+ ["Clicks", fits?.clicks, (v) => v.toFixed(2)],
7123
+ ["Impressions", fits?.impressions, (v) => v.toFixed(2)],
7124
+ ["CTR", fits?.ctr, (v) => `${(v * 100).toFixed(3)}pp`],
7125
+ ["Position", fits?.position, (v) => v.toFixed(3)]
7126
+ ]) {
7127
+ if (!trend) continue;
7128
+ const better = label === "Position" ? trend.slope < 0 : trend.slope > 0;
7129
+ const direction = trend.slope === 0 ? "flat" : better ? "improving" : "declining";
7130
+ trendLines.push(
7131
+ ` ${`${label}:`.padEnd(13)}${fmt(trend.slope).padStart(10)}/day ${direction} (r\xB2=${trend.r2.toFixed(2)})`
7132
+ );
7133
+ }
7134
+ if (trendLines.length > 0) {
7135
+ console.log(`
7136
+ Trend (least-squares fit over ${days} day${days === 1 ? "" : "s"}):`);
7137
+ for (const line of trendLines) console.log(line);
7138
+ }
7118
7139
  console.log();
7119
- console.log(` ${"DATE".padEnd(12)}${"CLICKS".padStart(10)}${"IMPR".padStart(12)}${"CTR".padStart(10)}`);
7120
- console.log(` ${"\u2500".repeat(12)}${"\u2500".repeat(10)}${"\u2500".repeat(12)}${"\u2500".repeat(10)}`);
7140
+ console.log(` ${"DATE".padEnd(12)}${"CLICKS".padStart(10)}${"IMPR".padStart(12)}${"CTR".padStart(10)}${"POS".padStart(9)}`);
7141
+ console.log(` ${"\u2500".repeat(12)}${"\u2500".repeat(10)}${"\u2500".repeat(12)}${"\u2500".repeat(10)}${"\u2500".repeat(9)}`);
7121
7142
  for (const row of data.daily) {
7122
7143
  console.log(
7123
- ` ${row.date.padEnd(12)}${row.clicks.toLocaleString().padStart(10)}${row.impressions.toLocaleString().padStart(12)}${(row.ctr * 100).toFixed(2).padStart(9)}%`
7144
+ ` ${row.date.padEnd(12)}${row.clicks.toLocaleString().padStart(10)}${row.impressions.toLocaleString().padStart(12)}${(row.ctr * 100).toFixed(2).padStart(9)}%${(row.position == null ? "\u2014" : row.position.toFixed(1)).padStart(9)}`
7124
7145
  );
7125
7146
  }
7126
7147
  }
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-W6OWEPZG.js";
3
+ } from "./chunk-FZAAGXTK.js";
4
4
  import {
5
5
  loadConfig
6
- } from "./chunk-HCGTKQCG.js";
7
- import "./chunk-J27J2DF6.js";
8
- import "./chunk-EXDO7EPL.js";
6
+ } from "./chunk-2TLRE2L3.js";
7
+ import "./chunk-C6ZZH3XI.js";
8
+ import "./chunk-NG7OR6GO.js";
9
9
  export {
10
10
  createServer,
11
11
  loadConfig
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  IntelligenceService
3
- } from "./chunk-J27J2DF6.js";
4
- import "./chunk-EXDO7EPL.js";
3
+ } from "./chunk-C6ZZH3XI.js";
4
+ import "./chunk-NG7OR6GO.js";
5
5
  export {
6
6
  IntelligenceService
7
7
  };
package/dist/mcp.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  PACKAGE_VERSION,
4
4
  canonryMcpTools,
5
5
  createApiClient
6
- } from "./chunk-HCGTKQCG.js";
6
+ } from "./chunk-2TLRE2L3.js";
7
7
  import {
8
8
  isReadOnlyKey
9
- } from "./chunk-EXDO7EPL.js";
9
+ } from "./chunk-NG7OR6GO.js";
10
10
 
11
11
  // src/mcp/cli.ts
12
12
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonry/canonry",
3
- "version": "4.161.0",
3
+ "version": "4.162.0",
4
4
  "type": "module",
5
5
  "description": "Agent-first open-source AEO operating platform - track how answer engines cite your domain",
6
6
  "license": "FSL-1.1-ALv2",
@@ -71,27 +71,27 @@
71
71
  "tsup": "^8.5.1",
72
72
  "tsx": "^4.19.0",
73
73
  "@ainyc/canonry-api-client": "0.0.0",
74
- "@ainyc/canonry-api-routes": "0.0.0",
75
74
  "@ainyc/canonry-config": "0.0.0",
76
- "@ainyc/canonry-db": "0.0.0",
77
- "@ainyc/canonry-contracts": "0.0.0",
78
75
  "@ainyc/canonry-integration-bing": "0.0.0",
76
+ "@ainyc/canonry-contracts": "0.0.0",
77
+ "@ainyc/canonry-db": "0.0.0",
79
78
  "@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
80
- "@ainyc/canonry-integration-openai-ads": "0.0.0",
81
- "@ainyc/canonry-integration-cloud-run": "0.0.0",
82
79
  "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
83
- "@ainyc/canonry-integration-commoncrawl": "0.0.0",
80
+ "@ainyc/canonry-api-routes": "0.0.0",
81
+ "@ainyc/canonry-integration-cloud-run": "0.0.0",
82
+ "@ainyc/canonry-integration-openai-ads": "0.0.0",
84
83
  "@ainyc/canonry-integration-google": "0.0.0",
85
- "@ainyc/canonry-integration-google-business-profile": "0.0.0",
84
+ "@ainyc/canonry-integration-commoncrawl": "0.0.0",
86
85
  "@ainyc/canonry-integration-google-places": "0.0.0",
87
86
  "@ainyc/canonry-integration-traffic": "0.0.0",
87
+ "@ainyc/canonry-integration-google-business-profile": "0.0.0",
88
88
  "@ainyc/canonry-integration-wordpress": "0.0.0",
89
- "@ainyc/canonry-intelligence": "0.0.0",
90
- "@ainyc/canonry-provider-local": "0.0.0",
91
89
  "@ainyc/canonry-provider-claude": "0.0.0",
92
90
  "@ainyc/canonry-provider-cdp": "0.0.0",
93
91
  "@ainyc/canonry-provider-gemini": "0.0.0",
92
+ "@ainyc/canonry-intelligence": "0.0.0",
94
93
  "@ainyc/canonry-provider-openai": "0.0.0",
94
+ "@ainyc/canonry-provider-local": "0.0.0",
95
95
  "@ainyc/canonry-provider-perplexity": "0.0.0"
96
96
  },
97
97
  "scripts": {
@@ -1 +0,0 @@
1
- const c={contentStyle:{backgroundColor:"var(--chart-tooltip-bg, #18181b)",border:"1px solid var(--chart-tooltip-border, #3f3f46)",borderRadius:8,fontSize:12},labelStyle:{color:"var(--chart-tooltip-label, #e4e4e7)"},itemStyle:{color:"var(--chart-tooltip-item, #a1a1aa)"}},i={fill:"var(--chart-neutral-text-dim, #71717a)",fontSize:11},s="var(--chart-grid, #27272a)",u="var(--chart-axis, #27272a)",e=["var(--chart-series-1, #34d399)","var(--chart-series-2, #60a5fa)","var(--chart-series-3, #f472b6)","var(--chart-series-4, #facc15)","var(--chart-series-5, #a78bfa)","var(--chart-series-6, #fb923c)","var(--chart-series-7, #22d3ee)","var(--chart-series-8, #f87171)"],o={gemini:"#60a5fa",openai:"#34d399",claude:"#fb923c",perplexity:"#22d3ee",local:"#a78bfa"};function l(a,t=0){return o[a]??e[t%e.length]}const h={text:"var(--chart-neutral-text, #a1a1aa)",textDim:"var(--chart-neutral-text-dim, #71717a)",textFaint:"var(--chart-neutral-text-faint, #52525b)",surface:"var(--chart-neutral-surface, #27272a)",trackSubtle:"var(--chart-neutral-track-subtle, rgb(255 255 255 / 0.04))",gridLine:"var(--chart-neutral-grid-line, rgb(255 255 255 / 0.06))"},v={positive:"var(--chart-tone-positive, #34d399)",positiveDeep:"var(--chart-tone-positive-deep, #10b981)",caution:"var(--chart-tone-caution, #fbbf24)",negative:"var(--chart-tone-negative, #fb7185)"};function d(a){return a}function n(a){const t=/^(\d{4})-(\d{2})-(\d{2})/.exec(a);return t?{year:Number(t[1]),month:Number(t[2]),day:Number(t[3])}:null}function f(a){const t=String(a),r=n(t);return r?new Date(Date.UTC(r.year,r.month-1,r.day)).toLocaleDateString(void 0,{timeZone:"UTC",month:"short",day:"numeric",year:"numeric"}):t}function b(a){const t=n(String(a));return t?`${t.month}/${t.day}`:String(a)}function m(a){return new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function S(a){const t=new Date(a);return`${t.getMonth()+1}/${t.getDate()}`}export{u as C,i as a,f as b,c,h as d,e,b as f,v as g,s as h,S as i,m as j,d as o,l as p};