@canonry/canonry 4.141.0 → 4.143.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/agent-workspace/skills/canonry/references/canonry-cli.md +45 -5
- package/assets/assets/{AuditHistoryPanel-DlyLhzqq.js → AuditHistoryPanel--kNrRAQm.js} +1 -1
- package/assets/assets/{BacklinksPage-DNxtwQBF.js → BacklinksPage-CtW1w9lh.js} +1 -1
- package/assets/assets/{ChartPrimitives-BStLR_NC.js → ChartPrimitives-C-nMEqdu.js} +1 -1
- package/assets/assets/{HistoryPage-CIcCgoWK.js → HistoryPage-CAPJDSbc.js} +1 -1
- package/assets/assets/ProjectPage-79R3wJW6.js +9 -0
- package/assets/assets/{RunRow-C0mFtLlc.js → RunRow-aDzTzGSK.js} +1 -1
- package/assets/assets/{RunsPage-C-yo0yoj.js → RunsPage-Dy9oWMBK.js} +1 -1
- package/assets/assets/{SettingsPage-jg4MXOuo.js → SettingsPage-DTAs1BrZ.js} +1 -1
- package/assets/assets/{TrafficPage-CnYHIg8t.js → TrafficPage-B4ADqeKG.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-CEdyQT2P.js → TrafficSourceDetailPage-CFcoL_PR.js} +1 -1
- package/assets/assets/{arrow-left-DUv0imIl.js → arrow-left-DV9xcX1v.js} +1 -1
- package/assets/assets/{extract-error-message-CCOGDwlm.js → extract-error-message-DXtgw8Q8.js} +1 -1
- package/assets/assets/{index-BDo9nl4O.css → index-CYA3jd24.css} +1 -1
- package/assets/assets/index-H2iFFrr1.js +213 -0
- package/assets/assets/{trash-2-1Yg9W-vs.js → trash-2-DMV6uGU1.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-ZCFQGF3V.js → chunk-3G5B3IMZ.js} +319 -7
- package/dist/{chunk-OJOA425V.js → chunk-KUPTGRME.js} +4342 -3042
- package/dist/{chunk-HXXO2AF5.js → chunk-TJ6SDLXL.js} +4 -4
- package/dist/{chunk-2LUSZFB6.js → chunk-VN3CI6K6.js} +3339 -1226
- package/dist/cli.js +187 -65
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-4HQIUC7U.js → intelligence-service-V6JYDYGF.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +9 -9
- package/assets/assets/ProjectPage-BSI3Qum9.js +0 -8
- package/assets/assets/index-D6EP4dQs.js +0 -213
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-H2iFFrr1.js";const t=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],h=a("circle-question-mark",t);const e=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],d=a("download",e);const o=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],p=a("external-link",o);const c=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],s=a("trash-2",c);export{h as C,d as D,p as E,s as T};
|
package/assets/index.html
CHANGED
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
|
|
13
13
|
<link rel="apple-touch-icon" href="./apple-touch-icon.png" />
|
|
14
14
|
<title>Canonry</title>
|
|
15
|
-
<script type="module" crossorigin src="./assets/index-
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-H2iFFrr1.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-Be8JdV5M.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-CQ77EO2y.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-DSxTZhaH.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="./assets/vendor-markdown-6dwjPOKK.js">
|
|
20
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
20
|
+
<link rel="stylesheet" crossorigin href="./assets/index-CYA3jd24.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
23
23
|
<div id="root"></div>
|
|
@@ -26,6 +26,9 @@ import {
|
|
|
26
26
|
gscPerformanceOrderBySchema,
|
|
27
27
|
keywordBatchRequestSchema,
|
|
28
28
|
keywordGenerateRequestSchema,
|
|
29
|
+
measurementDiscoveryRequestSchema,
|
|
30
|
+
measurementPlanAuthoringSchema,
|
|
31
|
+
measurementPlanPublishRequestSchema,
|
|
29
32
|
notificationCreateRequestSchema,
|
|
30
33
|
notificationEventSchema,
|
|
31
34
|
organicEvidencePeriodSchema,
|
|
@@ -43,7 +46,7 @@ import {
|
|
|
43
46
|
trafficConnectWordpressRequestSchema,
|
|
44
47
|
trafficEventKindSchema,
|
|
45
48
|
trafficSeriesGranularitySchema
|
|
46
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-KUPTGRME.js";
|
|
47
50
|
|
|
48
51
|
// src/config.ts
|
|
49
52
|
import fs from "fs";
|
|
@@ -1144,6 +1147,130 @@ var putApiV1ProjectsByName = (options) => {
|
|
|
1144
1147
|
}
|
|
1145
1148
|
});
|
|
1146
1149
|
};
|
|
1150
|
+
var postApiV1ProjectsByNameMeasurementDiscovery = (options) => {
|
|
1151
|
+
return (options.client ?? client).post({
|
|
1152
|
+
security: [
|
|
1153
|
+
{
|
|
1154
|
+
scheme: "bearer",
|
|
1155
|
+
type: "http"
|
|
1156
|
+
}
|
|
1157
|
+
],
|
|
1158
|
+
url: "/api/v1/projects/{name}/measurement-discovery",
|
|
1159
|
+
...options,
|
|
1160
|
+
headers: {
|
|
1161
|
+
"Content-Type": "application/json",
|
|
1162
|
+
...options.headers
|
|
1163
|
+
}
|
|
1164
|
+
});
|
|
1165
|
+
};
|
|
1166
|
+
var getApiV1ProjectsByNameMeasurementPlan = (options) => {
|
|
1167
|
+
return (options.client ?? client).get({
|
|
1168
|
+
security: [
|
|
1169
|
+
{
|
|
1170
|
+
scheme: "bearer",
|
|
1171
|
+
type: "http"
|
|
1172
|
+
}
|
|
1173
|
+
],
|
|
1174
|
+
url: "/api/v1/projects/{name}/measurement-plan",
|
|
1175
|
+
...options
|
|
1176
|
+
});
|
|
1177
|
+
};
|
|
1178
|
+
var putApiV1ProjectsByNameMeasurementPlan = (options) => {
|
|
1179
|
+
return (options.client ?? client).put({
|
|
1180
|
+
security: [
|
|
1181
|
+
{
|
|
1182
|
+
scheme: "bearer",
|
|
1183
|
+
type: "http"
|
|
1184
|
+
}
|
|
1185
|
+
],
|
|
1186
|
+
url: "/api/v1/projects/{name}/measurement-plan",
|
|
1187
|
+
...options,
|
|
1188
|
+
headers: {
|
|
1189
|
+
"Content-Type": "application/json",
|
|
1190
|
+
...options.headers
|
|
1191
|
+
}
|
|
1192
|
+
});
|
|
1193
|
+
};
|
|
1194
|
+
var postApiV1ProjectsByNameMeasurementPlanCompilePreview = (options) => {
|
|
1195
|
+
return (options.client ?? client).post({
|
|
1196
|
+
security: [
|
|
1197
|
+
{
|
|
1198
|
+
scheme: "bearer",
|
|
1199
|
+
type: "http"
|
|
1200
|
+
}
|
|
1201
|
+
],
|
|
1202
|
+
url: "/api/v1/projects/{name}/measurement-plan/compile-preview",
|
|
1203
|
+
...options,
|
|
1204
|
+
headers: {
|
|
1205
|
+
"Content-Type": "application/json",
|
|
1206
|
+
...options.headers
|
|
1207
|
+
}
|
|
1208
|
+
});
|
|
1209
|
+
};
|
|
1210
|
+
var postApiV1ProjectsByNameMeasurementPlanDiffPreview = (options) => {
|
|
1211
|
+
return (options.client ?? client).post({
|
|
1212
|
+
security: [
|
|
1213
|
+
{
|
|
1214
|
+
scheme: "bearer",
|
|
1215
|
+
type: "http"
|
|
1216
|
+
}
|
|
1217
|
+
],
|
|
1218
|
+
url: "/api/v1/projects/{name}/measurement-plan/diff-preview",
|
|
1219
|
+
...options,
|
|
1220
|
+
headers: {
|
|
1221
|
+
"Content-Type": "application/json",
|
|
1222
|
+
...options.headers
|
|
1223
|
+
}
|
|
1224
|
+
});
|
|
1225
|
+
};
|
|
1226
|
+
var getApiV1ProjectsByNameMeasurementPlanVersions = (options) => {
|
|
1227
|
+
return (options.client ?? client).get({
|
|
1228
|
+
security: [
|
|
1229
|
+
{
|
|
1230
|
+
scheme: "bearer",
|
|
1231
|
+
type: "http"
|
|
1232
|
+
}
|
|
1233
|
+
],
|
|
1234
|
+
url: "/api/v1/projects/{name}/measurement-plan/versions",
|
|
1235
|
+
...options
|
|
1236
|
+
});
|
|
1237
|
+
};
|
|
1238
|
+
var postApiV1ProjectsByNameMeasurementPlanSegmentsByStableKeyRetire = (options) => {
|
|
1239
|
+
return (options.client ?? client).post({
|
|
1240
|
+
security: [
|
|
1241
|
+
{
|
|
1242
|
+
scheme: "bearer",
|
|
1243
|
+
type: "http"
|
|
1244
|
+
}
|
|
1245
|
+
],
|
|
1246
|
+
url: "/api/v1/projects/{name}/measurement-plan/segments/{stableKey}/retire",
|
|
1247
|
+
...options
|
|
1248
|
+
});
|
|
1249
|
+
};
|
|
1250
|
+
var getApiV1ProjectsByNameMeasurementPlanVersionsByRevision = (options) => {
|
|
1251
|
+
return (options.client ?? client).get({
|
|
1252
|
+
security: [
|
|
1253
|
+
{
|
|
1254
|
+
scheme: "bearer",
|
|
1255
|
+
type: "http"
|
|
1256
|
+
}
|
|
1257
|
+
],
|
|
1258
|
+
url: "/api/v1/projects/{name}/measurement-plan/versions/{revision}",
|
|
1259
|
+
...options
|
|
1260
|
+
});
|
|
1261
|
+
};
|
|
1262
|
+
var getApiV1ProjectsByNameMeasurementReport = (options) => {
|
|
1263
|
+
return (options.client ?? client).get({
|
|
1264
|
+
security: [
|
|
1265
|
+
{
|
|
1266
|
+
scheme: "bearer",
|
|
1267
|
+
type: "http"
|
|
1268
|
+
}
|
|
1269
|
+
],
|
|
1270
|
+
url: "/api/v1/projects/{name}/measurement-report",
|
|
1271
|
+
...options
|
|
1272
|
+
});
|
|
1273
|
+
};
|
|
1147
1274
|
var getApiV1Projects = (options) => {
|
|
1148
1275
|
return (options?.client ?? client).get({
|
|
1149
1276
|
security: [
|
|
@@ -4558,6 +4685,77 @@ var ApiClient = class {
|
|
|
4558
4685
|
})
|
|
4559
4686
|
);
|
|
4560
4687
|
}
|
|
4688
|
+
async getMeasurementPlan(project) {
|
|
4689
|
+
return this.invoke(
|
|
4690
|
+
() => getApiV1ProjectsByNameMeasurementPlan({ client: this.heyClient, path: { name: project } })
|
|
4691
|
+
);
|
|
4692
|
+
}
|
|
4693
|
+
async listMeasurementPlanVersions(project) {
|
|
4694
|
+
return this.invoke(
|
|
4695
|
+
() => getApiV1ProjectsByNameMeasurementPlanVersions({ client: this.heyClient, path: { name: project } })
|
|
4696
|
+
);
|
|
4697
|
+
}
|
|
4698
|
+
async getMeasurementPlanVersion(project, revision) {
|
|
4699
|
+
return this.invoke(
|
|
4700
|
+
() => getApiV1ProjectsByNameMeasurementPlanVersionsByRevision({
|
|
4701
|
+
client: this.heyClient,
|
|
4702
|
+
path: { name: project, revision }
|
|
4703
|
+
})
|
|
4704
|
+
);
|
|
4705
|
+
}
|
|
4706
|
+
async compileMeasurementPlanPreview(project, plan) {
|
|
4707
|
+
return this.invoke(
|
|
4708
|
+
() => postApiV1ProjectsByNameMeasurementPlanCompilePreview({
|
|
4709
|
+
client: this.heyClient,
|
|
4710
|
+
path: { name: project },
|
|
4711
|
+
body: plan
|
|
4712
|
+
})
|
|
4713
|
+
);
|
|
4714
|
+
}
|
|
4715
|
+
async diffMeasurementPlanPreview(project, plan) {
|
|
4716
|
+
return this.invoke(
|
|
4717
|
+
() => postApiV1ProjectsByNameMeasurementPlanDiffPreview({
|
|
4718
|
+
client: this.heyClient,
|
|
4719
|
+
path: { name: project },
|
|
4720
|
+
body: plan
|
|
4721
|
+
})
|
|
4722
|
+
);
|
|
4723
|
+
}
|
|
4724
|
+
async publishMeasurementPlan(project, request) {
|
|
4725
|
+
return this.invoke(
|
|
4726
|
+
() => putApiV1ProjectsByNameMeasurementPlan({
|
|
4727
|
+
client: this.heyClient,
|
|
4728
|
+
path: { name: project },
|
|
4729
|
+
body: request
|
|
4730
|
+
})
|
|
4731
|
+
);
|
|
4732
|
+
}
|
|
4733
|
+
async retireMeasurementPlanSegment(project, stableKey) {
|
|
4734
|
+
return this.invoke(
|
|
4735
|
+
() => postApiV1ProjectsByNameMeasurementPlanSegmentsByStableKeyRetire({
|
|
4736
|
+
client: this.heyClient,
|
|
4737
|
+
path: { name: project, stableKey }
|
|
4738
|
+
})
|
|
4739
|
+
);
|
|
4740
|
+
}
|
|
4741
|
+
async discoverMeasurementTargets(project, request) {
|
|
4742
|
+
return this.invoke(
|
|
4743
|
+
() => postApiV1ProjectsByNameMeasurementDiscovery({
|
|
4744
|
+
client: this.heyClient,
|
|
4745
|
+
path: { name: project },
|
|
4746
|
+
body: request
|
|
4747
|
+
})
|
|
4748
|
+
);
|
|
4749
|
+
}
|
|
4750
|
+
async getMeasurementReport(project, revision) {
|
|
4751
|
+
return this.invoke(
|
|
4752
|
+
() => getApiV1ProjectsByNameMeasurementReport({
|
|
4753
|
+
client: this.heyClient,
|
|
4754
|
+
path: { name: project },
|
|
4755
|
+
query: { revision }
|
|
4756
|
+
})
|
|
4757
|
+
);
|
|
4758
|
+
}
|
|
4561
4759
|
async listRuns(project, limit, kind) {
|
|
4562
4760
|
return this.invoke(
|
|
4563
4761
|
() => getApiV1ProjectsByNameRuns({
|
|
@@ -6110,6 +6308,11 @@ var runTriggerInputSchema = z2.object({
|
|
|
6110
6308
|
project: projectNameSchema,
|
|
6111
6309
|
request: runTriggerRequestSchema.optional()
|
|
6112
6310
|
});
|
|
6311
|
+
var measurementPlanVersionInputSchema = z2.object({ project: projectNameSchema, revision: z2.number().int().positive() });
|
|
6312
|
+
var measurementPlanPreviewInputSchema = z2.object({ project: projectNameSchema, plan: measurementPlanAuthoringSchema });
|
|
6313
|
+
var measurementPlanPublishInputSchema = measurementPlanPublishRequestSchema.extend({ project: projectNameSchema });
|
|
6314
|
+
var measurementPlanRetireInputSchema = z2.object({ project: projectNameSchema, stableKey: z2.string().min(1) });
|
|
6315
|
+
var measurementDiscoveryInputSchema = measurementDiscoveryRequestSchema.extend({ project: projectNameSchema });
|
|
6113
6316
|
var runsListInputSchema = z2.object({
|
|
6114
6317
|
project: projectNameSchema,
|
|
6115
6318
|
limit: z2.number().int().positive().max(500).optional()
|
|
@@ -6277,8 +6480,11 @@ async function submitGscSitemapsFromMcp(client2, input) {
|
|
|
6277
6480
|
}
|
|
6278
6481
|
var gaWindowInputSchema = z2.object({
|
|
6279
6482
|
project: projectNameSchema,
|
|
6280
|
-
window: analyticsWindowSchema.optional()
|
|
6483
|
+
window: analyticsWindowSchema.optional(),
|
|
6484
|
+
startDate: z2.string().optional(),
|
|
6485
|
+
endDate: z2.string().optional()
|
|
6281
6486
|
});
|
|
6487
|
+
var GA_RANGE_PARAMS = ["window", "startDate", "endDate"];
|
|
6282
6488
|
var gaTrafficInputSchema = gaWindowInputSchema.extend({
|
|
6283
6489
|
limit: z2.number().int().positive().max(500).optional()
|
|
6284
6490
|
});
|
|
@@ -7235,7 +7441,7 @@ var canonryMcpTools = [
|
|
|
7235
7441
|
inputSchema: gaTrafficInputSchema,
|
|
7236
7442
|
annotations: readAnnotations(),
|
|
7237
7443
|
openApiOperations: ["GET /api/v1/projects/{name}/ga/traffic"],
|
|
7238
|
-
handler: (client2, input) => client2.gaTraffic(input.project, compactStringParams(input, ["limit",
|
|
7444
|
+
handler: (client2, input) => client2.gaTraffic(input.project, compactStringParams(input, ["limit", ...GA_RANGE_PARAMS]))
|
|
7239
7445
|
}),
|
|
7240
7446
|
defineTool({
|
|
7241
7447
|
name: "canonry_ga_coverage",
|
|
@@ -7257,7 +7463,7 @@ var canonryMcpTools = [
|
|
|
7257
7463
|
inputSchema: gaWindowInputSchema,
|
|
7258
7464
|
annotations: readAnnotations(),
|
|
7259
7465
|
openApiOperations: ["GET /api/v1/projects/{name}/ga/ai-referral-history"],
|
|
7260
|
-
handler: (client2, input) => client2.gaAiReferralHistory(input.project, compactStringParams(input,
|
|
7466
|
+
handler: (client2, input) => client2.gaAiReferralHistory(input.project, compactStringParams(input, GA_RANGE_PARAMS))
|
|
7261
7467
|
}),
|
|
7262
7468
|
defineTool({
|
|
7263
7469
|
name: "canonry_ga_ai_referral_daily",
|
|
@@ -7268,7 +7474,7 @@ var canonryMcpTools = [
|
|
|
7268
7474
|
inputSchema: gaWindowInputSchema,
|
|
7269
7475
|
annotations: readAnnotations(),
|
|
7270
7476
|
openApiOperations: ["GET /api/v1/projects/{name}/ga/ai-referral-daily"],
|
|
7271
|
-
handler: (client2, input) => client2.gaAiReferralDaily(input.project, compactStringParams(input,
|
|
7477
|
+
handler: (client2, input) => client2.gaAiReferralDaily(input.project, compactStringParams(input, GA_RANGE_PARAMS))
|
|
7272
7478
|
}),
|
|
7273
7479
|
defineTool({
|
|
7274
7480
|
name: "canonry_ga_social_referral_history",
|
|
@@ -7279,7 +7485,7 @@ var canonryMcpTools = [
|
|
|
7279
7485
|
inputSchema: gaWindowInputSchema,
|
|
7280
7486
|
annotations: readAnnotations(),
|
|
7281
7487
|
openApiOperations: ["GET /api/v1/projects/{name}/ga/social-referral-history"],
|
|
7282
|
-
handler: (client2, input) => client2.gaSocialReferralHistory(input.project, compactStringParams(input,
|
|
7488
|
+
handler: (client2, input) => client2.gaSocialReferralHistory(input.project, compactStringParams(input, GA_RANGE_PARAMS))
|
|
7283
7489
|
}),
|
|
7284
7490
|
defineTool({
|
|
7285
7491
|
name: "canonry_ga_social_referral_trend",
|
|
@@ -7312,7 +7518,7 @@ var canonryMcpTools = [
|
|
|
7312
7518
|
inputSchema: gaWindowInputSchema,
|
|
7313
7519
|
annotations: readAnnotations(),
|
|
7314
7520
|
openApiOperations: ["GET /api/v1/projects/{name}/ga/session-history"],
|
|
7315
|
-
handler: (client2, input) => client2.gaSessionHistory(input.project, compactStringParams(input,
|
|
7521
|
+
handler: (client2, input) => client2.gaSessionHistory(input.project, compactStringParams(input, GA_RANGE_PARAMS))
|
|
7316
7522
|
}),
|
|
7317
7523
|
// ----- Google Business Profile (Phase 1: auth + discovery) -----
|
|
7318
7524
|
defineTool({
|
|
@@ -7668,6 +7874,112 @@ var canonryMcpTools = [
|
|
|
7668
7874
|
await client2.putKeywords(input.project, uniqueStrings(input.request.keywords));
|
|
7669
7875
|
}
|
|
7670
7876
|
}),
|
|
7877
|
+
defineTool({
|
|
7878
|
+
name: "canonry_measurement_discovery",
|
|
7879
|
+
title: "Discover measurement Targets",
|
|
7880
|
+
description: "Fetch a public sitemap under bounded network policy and deterministically classify project-owned URLs into Target proposals, aliases, shared paths, unmatched paths, and exclusions. Does not publish a plan.",
|
|
7881
|
+
access: "write",
|
|
7882
|
+
tier: "setup",
|
|
7883
|
+
inputSchema: measurementDiscoveryInputSchema,
|
|
7884
|
+
annotations: writeAnnotations({ idempotentHint: false, openWorldHint: true }),
|
|
7885
|
+
openApiOperations: ["POST /api/v1/projects/{name}/measurement-discovery"],
|
|
7886
|
+
handler: (client2, input) => client2.discoverMeasurementTargets(input.project, {
|
|
7887
|
+
sitemapUrl: input.sitemapUrl,
|
|
7888
|
+
rule: input.rule,
|
|
7889
|
+
...input.maxUrls === void 0 ? {} : { maxUrls: input.maxUrls }
|
|
7890
|
+
})
|
|
7891
|
+
}),
|
|
7892
|
+
defineTool({
|
|
7893
|
+
name: "canonry_measurement_plan_get",
|
|
7894
|
+
title: "Get measurement plan",
|
|
7895
|
+
description: "Get the active measurement plan for a project.",
|
|
7896
|
+
access: "read",
|
|
7897
|
+
tier: "setup",
|
|
7898
|
+
inputSchema: projectInputSchema,
|
|
7899
|
+
annotations: readAnnotations(),
|
|
7900
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan"],
|
|
7901
|
+
handler: (client2, input) => client2.getMeasurementPlan(input.project)
|
|
7902
|
+
}),
|
|
7903
|
+
defineTool({
|
|
7904
|
+
name: "canonry_measurement_plan_versions",
|
|
7905
|
+
title: "List measurement plan versions",
|
|
7906
|
+
description: "List immutable measurement-plan revisions.",
|
|
7907
|
+
access: "read",
|
|
7908
|
+
tier: "setup",
|
|
7909
|
+
inputSchema: projectInputSchema,
|
|
7910
|
+
annotations: readAnnotations(),
|
|
7911
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan/versions"],
|
|
7912
|
+
handler: (client2, input) => client2.listMeasurementPlanVersions(input.project)
|
|
7913
|
+
}),
|
|
7914
|
+
defineTool({
|
|
7915
|
+
name: "canonry_measurement_plan_version_get",
|
|
7916
|
+
title: "Get measurement plan revision",
|
|
7917
|
+
description: "Get one immutable measurement-plan revision.",
|
|
7918
|
+
access: "read",
|
|
7919
|
+
tier: "setup",
|
|
7920
|
+
inputSchema: measurementPlanVersionInputSchema,
|
|
7921
|
+
annotations: readAnnotations(),
|
|
7922
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan/versions/{revision}"],
|
|
7923
|
+
handler: (client2, input) => client2.getMeasurementPlanVersion(input.project, input.revision)
|
|
7924
|
+
}),
|
|
7925
|
+
defineTool({
|
|
7926
|
+
name: "canonry_measurement_plan_compile_preview",
|
|
7927
|
+
title: "Compile measurement plan",
|
|
7928
|
+
description: "Validate and compile a Target/group plan without publishing it.",
|
|
7929
|
+
access: "write",
|
|
7930
|
+
tier: "setup",
|
|
7931
|
+
inputSchema: measurementPlanPreviewInputSchema,
|
|
7932
|
+
annotations: writeAnnotations({ idempotentHint: true }),
|
|
7933
|
+
openApiOperations: ["POST /api/v1/projects/{name}/measurement-plan/compile-preview"],
|
|
7934
|
+
handler: (client2, input) => client2.compileMeasurementPlanPreview(input.project, input.plan)
|
|
7935
|
+
}),
|
|
7936
|
+
defineTool({
|
|
7937
|
+
name: "canonry_measurement_plan_diff_preview",
|
|
7938
|
+
title: "Preview measurement plan changes",
|
|
7939
|
+
description: "Compare a compiled Target/group plan with the active immutable revision without publishing it.",
|
|
7940
|
+
access: "write",
|
|
7941
|
+
tier: "setup",
|
|
7942
|
+
inputSchema: measurementPlanPreviewInputSchema,
|
|
7943
|
+
annotations: writeAnnotations({ idempotentHint: true }),
|
|
7944
|
+
openApiOperations: ["POST /api/v1/projects/{name}/measurement-plan/diff-preview"],
|
|
7945
|
+
handler: (client2, input) => client2.diffMeasurementPlanPreview(input.project, input.plan)
|
|
7946
|
+
}),
|
|
7947
|
+
defineTool({
|
|
7948
|
+
name: "canonry_measurement_plan_publish",
|
|
7949
|
+
title: "Publish measurement plan",
|
|
7950
|
+
description: "Publish only when the active revision still matches the revision you reviewed. Use null only when you reviewed a planless project.",
|
|
7951
|
+
access: "write",
|
|
7952
|
+
tier: "setup",
|
|
7953
|
+
inputSchema: measurementPlanPublishInputSchema,
|
|
7954
|
+
annotations: writeAnnotations({ idempotentHint: true }),
|
|
7955
|
+
openApiOperations: ["PUT /api/v1/projects/{name}/measurement-plan"],
|
|
7956
|
+
handler: (client2, input) => client2.publishMeasurementPlan(input.project, {
|
|
7957
|
+
expectedActiveRevision: input.expectedActiveRevision,
|
|
7958
|
+
plan: input.plan
|
|
7959
|
+
})
|
|
7960
|
+
}),
|
|
7961
|
+
defineTool({
|
|
7962
|
+
name: "canonry_measurement_plan_segment_retire",
|
|
7963
|
+
title: "Retire measurement segment",
|
|
7964
|
+
description: "Permanently retire an inactive Target or group stable key. Publish a revision without it first; there is no unretire.",
|
|
7965
|
+
access: "write",
|
|
7966
|
+
tier: "setup",
|
|
7967
|
+
inputSchema: measurementPlanRetireInputSchema,
|
|
7968
|
+
annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true }),
|
|
7969
|
+
openApiOperations: ["POST /api/v1/projects/{name}/measurement-plan/segments/{stableKey}/retire"],
|
|
7970
|
+
handler: (client2, input) => client2.retireMeasurementPlanSegment(input.project, input.stableKey)
|
|
7971
|
+
}),
|
|
7972
|
+
defineTool({
|
|
7973
|
+
name: "canonry_measurement_report",
|
|
7974
|
+
title: "Get measurement report",
|
|
7975
|
+
description: "Get a revision-pinned Target and group measurement report from stored runs. Never starts live provider work.",
|
|
7976
|
+
access: "read",
|
|
7977
|
+
tier: "setup",
|
|
7978
|
+
inputSchema: measurementPlanVersionInputSchema,
|
|
7979
|
+
annotations: readAnnotations(),
|
|
7980
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-report"],
|
|
7981
|
+
handler: (client2, input) => client2.getMeasurementReport(input.project, input.revision)
|
|
7982
|
+
}),
|
|
7671
7983
|
defineTool({
|
|
7672
7984
|
name: "canonry_run_trigger",
|
|
7673
7985
|
title: "Trigger run",
|