@ainyc/canonry 4.188.4 → 4.189.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.
- package/assets/assets/{AuditHistoryPanel-Cn1xsaFZ.js → AuditHistoryPanel-CZ7ygQfy.js} +1 -1
- package/assets/assets/{BacklinksPage-CfTxBHZn.js → BacklinksPage-CYEYxjE8.js} +1 -1
- package/assets/assets/{HistoryPage-BvgKqrbW.js → HistoryPage-CvAllKzD.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-CGbNTIdz.js → MeasurementPropertyPage-BED9ak5a.js} +1 -1
- package/assets/assets/ProjectPage-Cgl5v16o.js +9 -0
- package/assets/assets/{RunRow-DzneLSnv.js → RunRow-DUlFaUBp.js} +1 -1
- package/assets/assets/{RunsPage-BgByi_t3.js → RunsPage-BcbBe_aQ.js} +1 -1
- package/assets/assets/{SettingsPage-DBv-GyPu.js → SettingsPage-gCyOuoD_.js} +1 -1
- package/assets/assets/{SiteHealthSection-DaNslx5J.js → SiteHealthSection-DJfFmT3n.js} +3 -3
- package/assets/assets/{TrafficPage-B6mfVlPe.js → TrafficPage-2ATExz7V.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-BXwAVIDo.js → TrafficSourceDetailPage-0PBMk9UH.js} +1 -1
- package/assets/assets/{extract-error-message-DMJa2ku8.js → extract-error-message-D8N7K1pb.js} +1 -1
- package/assets/assets/index-Bhwxe6W_.js +86 -0
- package/assets/assets/{react-sigma_core.esm.min-DiTvmmQd.js → react-sigma_core.esm.min-CU1UA6VY.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-3HZELBZZ.js → chunk-CDI3YR57.js} +2587 -2569
- package/dist/{chunk-7NMMQ7QO.js → chunk-HG6NLN7H.js} +330 -30
- package/dist/{chunk-VJRQTKUB.js → chunk-J533DKYE.js} +2 -2
- package/dist/{chunk-AC3ZIRHR.js → chunk-QQLMRABM.js} +645 -502
- package/dist/{chunk-OXYM6VCJ.js → chunk-YDYB3H4O.js} +19 -1
- package/dist/cli.js +48 -22
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-GMG2S55U.js → intelligence-service-M5TYY4TH.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +11 -11
- package/assets/assets/ProjectPage-BQ4lzu49.js +0 -9
- package/assets/assets/index-BRnD7hdh.js +0 -86
|
@@ -99,7 +99,7 @@ import {
|
|
|
99
99
|
trafficEventKindSchema,
|
|
100
100
|
trafficSeriesGranularitySchema,
|
|
101
101
|
visibilityReportRequestSchema
|
|
102
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-CDI3YR57.js";
|
|
103
103
|
|
|
104
104
|
// src/cli-error.ts
|
|
105
105
|
function isMachineFormat(format) {
|
|
@@ -12404,6 +12404,23 @@ function zodErrorMessage(error) {
|
|
|
12404
12404
|
}
|
|
12405
12405
|
|
|
12406
12406
|
// src/mcp/toolkits.ts
|
|
12407
|
+
var CANONRY_MCP_TIERS = [
|
|
12408
|
+
"core",
|
|
12409
|
+
"monitoring",
|
|
12410
|
+
"setup",
|
|
12411
|
+
"gsc",
|
|
12412
|
+
"ga",
|
|
12413
|
+
"gbp",
|
|
12414
|
+
// `ads` is deliberately OpenAI / ChatGPT Ads. Google Ads has its own
|
|
12415
|
+
// toolkit so an agent never mistakes the two provider surfaces.
|
|
12416
|
+
"ads",
|
|
12417
|
+
"google-ads",
|
|
12418
|
+
"gtm",
|
|
12419
|
+
"conversion-tracking",
|
|
12420
|
+
"traffic",
|
|
12421
|
+
"agent",
|
|
12422
|
+
"discovery"
|
|
12423
|
+
];
|
|
12407
12424
|
var CANONRY_MCP_TOOLKIT_NAMES = [
|
|
12408
12425
|
"monitoring",
|
|
12409
12426
|
"setup",
|
|
@@ -13095,6 +13112,7 @@ export {
|
|
|
13095
13112
|
runMeasurementDraftAction,
|
|
13096
13113
|
canonryMcpTools,
|
|
13097
13114
|
CanonryMcpToolNames,
|
|
13115
|
+
CANONRY_MCP_TIERS,
|
|
13098
13116
|
CANONRY_MCP_TOOLKIT_NAMES,
|
|
13099
13117
|
createCanonryMcpServer
|
|
13100
13118
|
};
|
package/dist/cli.js
CHANGED
|
@@ -28,11 +28,11 @@ import {
|
|
|
28
28
|
trackCliCommandFinished,
|
|
29
29
|
trackEvent,
|
|
30
30
|
waitForServerRuntimeStartup
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-HG6NLN7H.js";
|
|
32
32
|
import {
|
|
33
33
|
autoSyncSkills,
|
|
34
34
|
formatAutoSyncNotice
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-J533DKYE.js";
|
|
36
36
|
import {
|
|
37
37
|
CliError,
|
|
38
38
|
EXIT_SYSTEM_ERROR,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
saveConfigPatch,
|
|
59
59
|
systemError,
|
|
60
60
|
usageError
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-YDYB3H4O.js";
|
|
62
62
|
import {
|
|
63
63
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
64
64
|
CLOUDFLARE_WORKER_GENERATED_MARKER,
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
projects,
|
|
73
73
|
queries,
|
|
74
74
|
renderReportHtml
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-QQLMRABM.js";
|
|
76
76
|
import {
|
|
77
77
|
AdsDeliverySnapshotStatuses,
|
|
78
78
|
AdsHistoricalCampaignRollupStatuses,
|
|
@@ -146,7 +146,7 @@ import {
|
|
|
146
146
|
shareOfVoiceReason,
|
|
147
147
|
visibilityReportRequestSchema,
|
|
148
148
|
winnabilityClassSchema
|
|
149
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-CDI3YR57.js";
|
|
150
150
|
|
|
151
151
|
// src/cli.ts
|
|
152
152
|
import { pathToFileURL } from "url";
|
|
@@ -12723,6 +12723,9 @@ async function setSchedule(project, opts) {
|
|
|
12723
12723
|
if (opts.sourceId) body.sourceId = opts.sourceId;
|
|
12724
12724
|
if (opts.preset) body.preset = opts.preset;
|
|
12725
12725
|
if (opts.cron) body.cron = opts.cron;
|
|
12726
|
+
if (opts.everyDays || opts.startDate || opts.at) {
|
|
12727
|
+
body.recurrence = { everyDays: Number(opts.everyDays), startDate: opts.startDate, time: opts.at };
|
|
12728
|
+
}
|
|
12726
12729
|
if (opts.timezone) body.timezone = opts.timezone;
|
|
12727
12730
|
if (opts.providers?.length) body.providers = opts.providers;
|
|
12728
12731
|
const result = await client.putSchedule(project, body);
|
|
@@ -12745,8 +12748,9 @@ async function showSchedule(project, format, kind) {
|
|
|
12745
12748
|
async function enableSchedule(project, format, kind) {
|
|
12746
12749
|
const client = getClient24();
|
|
12747
12750
|
const current = await client.getSchedule(project, kind);
|
|
12748
|
-
const body = { kind: current.kind, timezone: current.timezone, enabled: true };
|
|
12749
|
-
if (current.
|
|
12751
|
+
const body = { kind: current.kind, timezone: current.timezone, enabled: true, expectedUpdatedAt: current.updatedAt };
|
|
12752
|
+
if (current.recurrence) body.recurrence = current.recurrence;
|
|
12753
|
+
else if (current.preset) body.preset = current.preset;
|
|
12750
12754
|
else body.cron = current.cronExpr;
|
|
12751
12755
|
if (current.providers.length) body.providers = current.providers;
|
|
12752
12756
|
if (current.sourceId) body.sourceId = current.sourceId;
|
|
@@ -12760,8 +12764,9 @@ async function enableSchedule(project, format, kind) {
|
|
|
12760
12764
|
async function disableSchedule(project, format, kind) {
|
|
12761
12765
|
const client = getClient24();
|
|
12762
12766
|
const current = await client.getSchedule(project, kind);
|
|
12763
|
-
const body = { kind: current.kind, timezone: current.timezone, enabled: false };
|
|
12764
|
-
if (current.
|
|
12767
|
+
const body = { kind: current.kind, timezone: current.timezone, enabled: false, expectedUpdatedAt: current.updatedAt };
|
|
12768
|
+
if (current.recurrence) body.recurrence = current.recurrence;
|
|
12769
|
+
else if (current.preset) body.preset = current.preset;
|
|
12765
12770
|
else body.cron = current.cronExpr;
|
|
12766
12771
|
if (current.providers.length) body.providers = current.providers;
|
|
12767
12772
|
if (current.sourceId) body.sourceId = current.sourceId;
|
|
@@ -12787,7 +12792,13 @@ function printSchedule(s) {
|
|
|
12787
12792
|
if (s.preset) {
|
|
12788
12793
|
console.log(` Preset: ${s.preset}`);
|
|
12789
12794
|
}
|
|
12790
|
-
|
|
12795
|
+
if (s.recurrence) {
|
|
12796
|
+
console.log(` Every: ${s.recurrence.everyDays} day(s)`);
|
|
12797
|
+
console.log(` Start: ${s.recurrence.startDate}`);
|
|
12798
|
+
console.log(` At: ${s.recurrence.time}`);
|
|
12799
|
+
} else {
|
|
12800
|
+
console.log(` Cron: ${s.cronExpr}`);
|
|
12801
|
+
}
|
|
12791
12802
|
console.log(` Timezone: ${s.timezone}`);
|
|
12792
12803
|
console.log(` Enabled: ${s.enabled ? "yes" : "no"}`);
|
|
12793
12804
|
if (s.kind === "traffic-sync" && s.sourceId) {
|
|
@@ -12808,33 +12819,48 @@ function printSchedule(s) {
|
|
|
12808
12819
|
var SCHEDULE_CLI_COMMANDS = [
|
|
12809
12820
|
{
|
|
12810
12821
|
path: ["schedule", "set"],
|
|
12811
|
-
usage: "canonry schedule set <project> (--preset <preset> | --cron <expr>) [--kind answer-visibility|traffic-sync|gbp-sync|data-refresh|backlinks-sync] [--source <id>] [--timezone <tz>] [--provider <name>...] [--format json]",
|
|
12822
|
+
usage: "canonry schedule set <project> (--preset <preset> | --cron <expr> | --every-days <n> --start-date <YYYY-MM-DD> --at <HH:mm>) [--kind answer-visibility|traffic-sync|gbp-sync|data-refresh|backlinks-sync] [--source <id>] [--timezone <tz>] [--provider <name>...] [--format json]",
|
|
12812
12823
|
options: {
|
|
12813
12824
|
preset: stringOption(),
|
|
12814
12825
|
cron: stringOption(),
|
|
12826
|
+
"every-days": stringOption(),
|
|
12827
|
+
"start-date": stringOption(),
|
|
12828
|
+
at: stringOption(),
|
|
12815
12829
|
kind: stringOption(),
|
|
12816
12830
|
source: stringOption(),
|
|
12817
12831
|
timezone: stringOption(),
|
|
12818
12832
|
provider: multiStringOption()
|
|
12819
12833
|
},
|
|
12820
12834
|
run: async (input) => {
|
|
12821
|
-
const usage = "canonry schedule set <project> (--preset <preset> | --cron <expr>) [--kind answer-visibility|traffic-sync|gbp-sync|data-refresh|backlinks-sync] [--source <id>] [--timezone <tz>] [--provider <name>...] [--format json]";
|
|
12835
|
+
const usage = "canonry schedule set <project> (--preset <preset> | --cron <expr> | --every-days <n> --start-date <YYYY-MM-DD> --at <HH:mm>) [--kind answer-visibility|traffic-sync|gbp-sync|data-refresh|backlinks-sync] [--source <id>] [--timezone <tz>] [--provider <name>...] [--format json]";
|
|
12822
12836
|
const project = requireProject(input, "schedule.set", usage);
|
|
12823
|
-
|
|
12824
|
-
|
|
12825
|
-
|
|
12826
|
-
|
|
12827
|
-
|
|
12828
|
-
|
|
12829
|
-
|
|
12830
|
-
|
|
12837
|
+
const preset = getString(input.values, "preset");
|
|
12838
|
+
const cron = getString(input.values, "cron");
|
|
12839
|
+
const everyDays = getString(input.values, "every-days");
|
|
12840
|
+
const startDate = getString(input.values, "start-date");
|
|
12841
|
+
const at = getString(input.values, "at");
|
|
12842
|
+
const recurrenceFlags = [everyDays, startDate, at].filter(Boolean);
|
|
12843
|
+
if (recurrenceFlags.length > 0 && recurrenceFlags.length < 3) {
|
|
12844
|
+
throw usageError("Error: --every-days, --start-date, and --at must be used together", {
|
|
12845
|
+
message: "schedule recurrence requires every-days, start-date, and at",
|
|
12846
|
+
details: { command: "schedule.set", usage, required: ["every-days + start-date + at"] }
|
|
12847
|
+
});
|
|
12848
|
+
}
|
|
12849
|
+
const timingCount = Number(Boolean(preset)) + Number(Boolean(cron)) + Number(recurrenceFlags.length === 3);
|
|
12850
|
+
if (timingCount !== 1) {
|
|
12851
|
+
throw usageError("Error: exactly one schedule timing is required", {
|
|
12852
|
+
message: "exactly one of schedule preset, cron, or recurrence is required",
|
|
12853
|
+
details: { command: "schedule.set", usage, required: ["preset | cron | recurrence"] }
|
|
12831
12854
|
});
|
|
12832
12855
|
}
|
|
12833
12856
|
await setSchedule(project, {
|
|
12834
12857
|
kind: getString(input.values, "kind"),
|
|
12835
12858
|
sourceId: getString(input.values, "source"),
|
|
12836
|
-
preset
|
|
12837
|
-
cron
|
|
12859
|
+
preset,
|
|
12860
|
+
cron,
|
|
12861
|
+
everyDays,
|
|
12862
|
+
startDate,
|
|
12863
|
+
at,
|
|
12838
12864
|
timezone: getString(input.values, "timezone"),
|
|
12839
12865
|
providers: getStringArray(input.values, "provider"),
|
|
12840
12866
|
format: input.format
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
createGoogleMarketingCredentialStore,
|
|
4
4
|
createGoogleMarketingRuntime,
|
|
5
5
|
createServer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HG6NLN7H.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-YDYB3H4O.js";
|
|
10
|
+
import "./chunk-QQLMRABM.js";
|
|
11
|
+
import "./chunk-CDI3YR57.js";
|
|
12
12
|
export {
|
|
13
13
|
GoogleMarketingRuntimeError,
|
|
14
14
|
createGoogleMarketingCredentialStore,
|
package/dist/mcp.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
autoSyncSkills
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-J533DKYE.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient,
|
|
6
6
|
createCanonryMcpServer
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-YDYB3H4O.js";
|
|
8
8
|
import {
|
|
9
9
|
isReadOnlyKey
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-CDI3YR57.js";
|
|
11
11
|
|
|
12
12
|
// src/mcp/cli.ts
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ainyc/canonry",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.189.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
|
"license": "FSL-1.1-ALv2",
|
|
@@ -72,28 +72,28 @@
|
|
|
72
72
|
"tsx": "^4.19.0",
|
|
73
73
|
"@ainyc/canonry-web": "0.0.0",
|
|
74
74
|
"@ainyc/canonry-api-client": "0.0.0",
|
|
75
|
-
"@ainyc/canonry-api-routes": "0.0.0",
|
|
76
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
77
75
|
"@ainyc/canonry-config": "0.0.0",
|
|
76
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
77
|
+
"@ainyc/canonry-api-routes": "0.0.0",
|
|
78
78
|
"@ainyc/canonry-db": "0.0.0",
|
|
79
|
-
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
80
79
|
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
80
|
+
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
81
|
+
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
81
82
|
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
82
83
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
83
84
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
84
|
-
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
85
85
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
86
|
-
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
87
86
|
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
88
|
-
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
89
|
-
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
90
87
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
88
|
+
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
89
|
+
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
90
|
+
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
91
|
+
"@ainyc/canonry-intelligence": "0.0.0",
|
|
91
92
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
92
93
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
93
|
-
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
94
|
-
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
95
|
-
"@ainyc/canonry-intelligence": "0.0.0",
|
|
96
94
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
95
|
+
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
96
|
+
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
97
97
|
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
98
98
|
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
99
99
|
},
|