@canonry/canonry 5.21.0 → 5.28.1

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 (43) hide show
  1. package/README.md +2 -1
  2. package/assets/agent-workspace/skills/aero/SKILL.md +37 -3
  3. package/assets/agent-workspace/skills/aero/references/portfolio-analysis.md +26 -12
  4. package/assets/agent-workspace/skills/aero/references/reporting.md +1 -0
  5. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +101 -6
  6. package/assets/agent-workspace/skills/canonry/references/google-business-profile.md +30 -6
  7. package/assets/agent-workspace/skills/canonry/references/indexing.md +1 -0
  8. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +30 -0
  9. package/assets/assets/{AuditHistoryPanel-CjxWA3lx.js → AuditHistoryPanel-CWd9UN6L.js} +1 -1
  10. package/assets/assets/{BacklinksPage-Bdd164Up.js → BacklinksPage-B2gPTzyE.js} +1 -1
  11. package/assets/assets/ChartPrimitives-B5okB5g-.js +1 -0
  12. package/assets/assets/{HistoryPage-BvJmE-kP.js → HistoryPage-xtkG8SZN.js} +1 -1
  13. package/assets/assets/{MeasurementPropertyPage-HuP6RMZ-.js → MeasurementPropertyPage-DxIMU3_T.js} +1 -1
  14. package/assets/assets/{ProjectPage-DOvXVbyy.js → ProjectPage-CMAFZq_s.js} +5 -5
  15. package/assets/assets/{RunRow-Cnb3JOBw.js → RunRow-DnSo7Nle.js} +1 -1
  16. package/assets/assets/{RunsPage-Dvz1JYIm.js → RunsPage-FAEuo4Ra.js} +1 -1
  17. package/assets/assets/{SettingsPage-DYGvphkg.js → SettingsPage-C4OZ1HB9.js} +1 -1
  18. package/assets/assets/{SiteHealthSection-CUNiKaod.js → SiteHealthSection-BzMxlz8-.js} +3 -3
  19. package/assets/assets/{TrafficPage-Bf4Tq95q.js → TrafficPage-D03S6xF6.js} +1 -1
  20. package/assets/assets/{TrafficSourceDetailPage-CIuLWZgT.js → TrafficSourceDetailPage-DBu6oFFK.js} +1 -1
  21. package/assets/assets/{extract-error-message-DZex1e4H.js → extract-error-message-BuH2CCaJ.js} +1 -1
  22. package/assets/assets/index-Ba-Zs45G.js +86 -0
  23. package/assets/assets/index-DfhmHULl.css +1 -0
  24. package/assets/assets/{react-sigma_core.esm.min-CxvtwEkv.js → react-sigma_core.esm.min-CxwZsgxR.js} +1 -1
  25. package/assets/assets/{v2-overview-adapter-Bh4qIzLp.js → v2-overview-adapter-DTCKxzZT.js} +1 -1
  26. package/assets/index.html +2 -2
  27. package/dist/{chunk-FAVYLZQV.js → chunk-7RKCDOWO.js} +7005 -5086
  28. package/dist/{chunk-MEAKE5W7.js → chunk-DX2JUC5H.js} +3 -3
  29. package/dist/{chunk-NFN5GSEJ.js → chunk-EP4STEPI.js} +3558 -1170
  30. package/dist/{chunk-FRWZWJB3.js → chunk-FNGITGDF.js} +176 -8
  31. package/dist/{chunk-2LO7FLVD.js → chunk-KVQHG3WB.js} +6721 -5889
  32. package/dist/{chunk-WUT3G2GM.js → chunk-MPICT6V7.js} +131 -36
  33. package/dist/{chunk-HDJHQPW3.js → chunk-ONTEFAA7.js} +2 -2
  34. package/dist/cli.js +443 -48
  35. package/dist/{demo-server-7BVVVXPM.js → demo-server-HWWIMGD6.js} +4 -4
  36. package/dist/index.d.ts +9 -1
  37. package/dist/index.js +6 -6
  38. package/dist/{intelligence-service-3UUKRAZ5.js → intelligence-service-6LDMVI66.js} +2 -2
  39. package/dist/mcp.js +4 -4
  40. package/package.json +12 -11
  41. package/assets/assets/ChartPrimitives-BQC2VH0O.js +0 -1
  42. package/assets/assets/index-CeXW-lzj.js +0 -86
  43. package/assets/assets/index-EJC8PSbh.css +0 -1
@@ -4,11 +4,11 @@ import {
4
4
  import {
5
5
  layoutSiteCrawlGraphInput,
6
6
  persistSiteCrawlGraphLayout
7
- } from "./chunk-HDJHQPW3.js";
7
+ } from "./chunk-ONTEFAA7.js";
8
8
  import {
9
9
  PACKAGE_VERSION,
10
10
  canonryMcpTools
11
- } from "./chunk-WUT3G2GM.js";
11
+ } from "./chunk-MPICT6V7.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-7RKCDOWO.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-KVQHG3WB.js";
112
112
 
113
113
  // src/demo-server.ts
114
114
  import { dirname, join as join2 } from "path";
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { FastifyInstance } from 'fastify';
2
2
  import { DatabaseClient } from '@ainyc/canonry-db';
3
- import { ProviderQuotaPolicy, SchedulableRunKind, AgentProviderId, EmbedConfigEntry, AgentPluginState, GoogleAdsCampaignMetricsQuery, GoogleAdsRawSnapshotDto, GoogleAdsEffectiveGoalGraphDto, GoogleMarketingProvider, GoogleAdsAccessibleCustomersResponse, GoogleAdsAccessibleCustomerDto, GtmAccountsResponse, GtmContainerListResponse, GtmWorkspaceListResponse, GtmRawSnapshotDto } from '@ainyc/canonry-contracts';
3
+ import { ProviderQuotaPolicy, ProviderBatchConfig, ProviderPricing, SchedulableRunKind, AgentProviderId, EmbedConfigEntry, AgentPluginState, GoogleAdsCampaignMetricsQuery, GoogleAdsRawSnapshotDto, GoogleAdsEffectiveGoalGraphDto, GoogleMarketingProvider, GoogleAdsAccessibleCustomersResponse, GoogleAdsAccessibleCustomerDto, GtmAccountsResponse, GtmContainerListResponse, GtmWorkspaceListResponse, GtmRawSnapshotDto } from '@ainyc/canonry-contracts';
4
4
  import { GoogleTokenResponse } from '@ainyc/canonry-integration-google';
5
5
 
6
6
  type GoogleConnectionType = 'gsc' | 'ga4' | 'gbp';
@@ -15,6 +15,14 @@ interface ProviderConfigEntry {
15
15
  vertexRegion?: string;
16
16
  /** Path to service account JSON for Vertex AI auth (falls back to ADC) */
17
17
  vertexCredentials?: string;
18
+ /**
19
+ * Batch dispatch for scheduled sweeps (`docs/batch-mode.md`). Off unless
20
+ * `enabled: true`, and only for a provider whose adapter has a batch API.
21
+ * Anthropic batches are not zero-data-retention eligible.
22
+ */
23
+ batch?: ProviderBatchConfig;
24
+ /** Price overrides (USD) per model id, winning over the built-in table. */
25
+ pricing?: ProviderPricing;
18
26
  }
19
27
  interface CdpConfigEntry {
20
28
  host?: string;
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-EP4STEPI.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-FNGITGDF.js";
10
+ import "./chunk-ONTEFAA7.js";
11
+ import "./chunk-MPICT6V7.js";
12
+ import "./chunk-7RKCDOWO.js";
13
+ import "./chunk-KVQHG3WB.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-7RKCDOWO.js";
5
+ import "./chunk-KVQHG3WB.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-DX2JUC5H.js";
4
4
  import {
5
5
  createApiClient,
6
6
  createCanonryMcpServer
7
- } from "./chunk-FRWZWJB3.js";
8
- import "./chunk-WUT3G2GM.js";
7
+ } from "./chunk-FNGITGDF.js";
8
+ import "./chunk-MPICT6V7.js";
9
9
  import {
10
10
  isReadOnlyKey,
11
11
  updateCheckEnvOptOut
12
- } from "./chunk-2LO7FLVD.js";
12
+ } from "./chunk-KVQHG3WB.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.28.1",
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": [
@@ -87,31 +87,32 @@
87
87
  "tsup": "^8.5.1",
88
88
  "tsx": "^4.19.0",
89
89
  "@ainyc/canonry-web": "0.0.0",
90
- "@ainyc/canonry-api-client": "0.0.0",
91
90
  "@ainyc/canonry-api-routes": "0.0.0",
92
91
  "@ainyc/canonry-contracts": "0.0.0",
93
92
  "@ainyc/canonry-config": "0.0.0",
94
93
  "@ainyc/canonry-db": "0.0.0",
95
- "@ainyc/canonry-integration-bing": "0.0.0",
94
+ "@ainyc/canonry-api-client": "0.0.0",
96
95
  "@ainyc/canonry-integration-cloud-run": "0.0.0",
96
+ "@ainyc/canonry-integration-bing": "0.0.0",
97
97
  "@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
98
- "@ainyc/canonry-integration-google": "0.0.0",
99
98
  "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
100
- "@ainyc/canonry-integration-google-ads": "0.0.0",
101
- "@ainyc/canonry-integration-google-business-profile": "0.0.0",
102
- "@ainyc/canonry-integration-google-places": "0.0.0",
103
99
  "@ainyc/canonry-integration-commoncrawl": "0.0.0",
100
+ "@ainyc/canonry-integration-google": "0.0.0",
101
+ "@ainyc/canonry-integration-google-places": "0.0.0",
104
102
  "@ainyc/canonry-integration-google-tag-manager": "0.0.0",
105
103
  "@ainyc/canonry-integration-openai-ads": "0.0.0",
106
- "@ainyc/canonry-integration-wordpress": "0.0.0",
104
+ "@ainyc/canonry-integration-google-business-profile": "0.0.0",
105
+ "@ainyc/canonry-integration-google-ads": "0.0.0",
107
106
  "@ainyc/canonry-integration-traffic": "0.0.0",
107
+ "@ainyc/canonry-integration-wordpress": "0.0.0",
108
108
  "@ainyc/canonry-intelligence": "0.0.0",
109
109
  "@ainyc/canonry-provider-cdp": "0.0.0",
110
- "@ainyc/canonry-provider-gemini": "0.0.0",
111
110
  "@ainyc/canonry-provider-claude": "0.0.0",
111
+ "@ainyc/canonry-provider-gemini": "0.0.0",
112
+ "@ainyc/canonry-provider-local": "0.0.0",
113
+ "@ainyc/canonry-provider-muse": "0.0.0",
112
114
  "@ainyc/canonry-provider-openai": "0.0.0",
113
- "@ainyc/canonry-provider-perplexity": "0.0.0",
114
- "@ainyc/canonry-provider-local": "0.0.0"
115
+ "@ainyc/canonry-provider-perplexity": "0.0.0"
115
116
  },
116
117
  "scripts": {
117
118
  "build": "pnpm run build:cli && pnpm run build:web",
@@ -1 +0,0 @@
1
- import{j as i}from"./vendor-tanstack-ZXXkndVj.js";import{R as k,C as I,a as R,e as A,X as _,Y as L,T as w,d as v}from"./vendor-recharts-llkUFBGR.js";const O={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)"}},b={fill:"var(--chart-neutral-text-dim, #8b8b93)",fontSize:11},j="var(--chart-grid, #27272a)",p="var(--chart-axis, #27272a)",y=["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)"],K={gemini:"#60a5fa",openai:"#34d399",claude:"#fb923c",perplexity:"#22d3ee",local:"#a78bfa"};function M(a,r=0){return K[a]??y[r%y.length]}const E={text:"var(--chart-neutral-text, #a1a1aa)",textDim:"var(--chart-neutral-text-dim, #8b8b93)",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))"},N={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)",neutral:"var(--chart-tone-neutral, #a1a1aa)"};function U(a){return a}function f(a){const r=/^(\d{4})-(\d{2})-(\d{2})/.exec(a);return r?{year:Number(r[1]),month:Number(r[2]),day:Number(r[3])}:null}function Y(a){const r=String(a),e=f(r);return e?new Date(Date.UTC(e.year,e.month-1,e.day)).toLocaleDateString(void 0,{timeZone:"UTC",month:"short",day:"numeric",year:"numeric"}):r}function F(a){const r=f(String(a));return r?`${r.month}/${r.day}`:String(a)}function G(a){const r=f(String(a));return r?new Date(Date.UTC(r.year,r.month-1,r.day)).toLocaleDateString(void 0,{timeZone:"UTC",month:"short",day:"numeric"}):String(a)}function P(a){return new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function V(a){return new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric"})}function W(a){return new Date(a).getFullYear()}function z(a){const r=new Date(a);return`${r.getMonth()+1}/${r.getDate()}`}function Z({data:a,xKey:r,series:e,height:x=260,xTickFormatter:g,labelFormatter:u,onSelectX:d,selectedX:h,accessibilityLayer:S=!0,ariaLabel:T}){const m=[...new Set(e.map(t=>t.axisId))],C=new Map(e.map(t=>[t.label,t.formatValue])),D=a.map((t,s)=>{const n={...t};for(const o of e){if(!o.trend)continue;const c=o.trend.startIndex??0,l=o.trend.endIndex??a.length-1;if(s<c||s>l){n[`${o.dataKey}__trend`]=null;continue}n[`${o.dataKey}__trend`]=l<=c?o.trend.start:o.trend.start+(o.trend.end-o.trend.start)*(s-c)/(l-c)}return n});return i.jsx(k,{width:"100%",height:x,children:i.jsxs(I,{data:D,accessibilityLayer:S,"aria-label":T,margin:{top:8,right:8,bottom:4,left:0},onClick:d?t=>{t?.activeLabel!==void 0&&d(String(t.activeLabel))}:void 0,style:d?{cursor:"pointer"}:void 0,children:[i.jsx(R,{stroke:j,strokeDasharray:"3 3",vertical:!1}),h!=null&&i.jsx(A,{x:h,yAxisId:m[0],stroke:E.text,strokeDasharray:"2 3",strokeWidth:1}),i.jsx(_,{dataKey:r,tick:b,stroke:p,tickFormatter:g,minTickGap:24}),m.map((t,s)=>{const n=e.find(o=>o.axisId===t);return i.jsx(L,{yAxisId:t,orientation:s===1?"right":"left",hide:s>1,reversed:n.inverted??!1,domain:n.inverted?[1,"auto"]:[0,"auto"],tick:b,stroke:p,width:48,tickFormatter:n.formatValue},t)}),i.jsx(w,{...O,labelFormatter:t=>u?u(String(t)):String(t),formatter:(t,s)=>{const n=String(s??"");return typeof t!="number"?[String(t??""),n]:[C.get(n)?.(t)??t.toLocaleString(),n]}}),e.filter(t=>t.trend).map(t=>i.jsx(v,{yAxisId:t.axisId,dataKey:`${t.dataKey}__trend`,name:`${t.label} trend`,stroke:t.color,strokeWidth:1.5,strokeDasharray:"5 4",strokeOpacity:.55,dot:!1,activeDot:!1,isAnimationActive:!1,legendType:"none",tooltipType:"none"},`${t.dataKey}-trend`)),e.map(t=>i.jsx(v,{yAxisId:t.axisId,dataKey:t.dataKey,name:t.label,stroke:t.color,strokeWidth:2,dot:!1,activeDot:{r:3},connectNulls:!1,isAnimationActive:!1},t.dataKey))]})})}export{j as C,Z as M,p as a,b,Y as c,O as d,y as e,F as f,E as g,N as h,z as i,P as j,G as k,W as l,V as m,U as o,M as p};