@canonry/canonry 4.142.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.
Files changed (28) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +33 -0
  2. package/assets/assets/{AuditHistoryPanel-CfaF5B_e.js → AuditHistoryPanel--kNrRAQm.js} +1 -1
  3. package/assets/assets/{BacklinksPage-BIytWBpL.js → BacklinksPage-CtW1w9lh.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-0tQT6GE7.js → ChartPrimitives-C-nMEqdu.js} +1 -1
  5. package/assets/assets/{HistoryPage-Bn6IH8WV.js → HistoryPage-CAPJDSbc.js} +1 -1
  6. package/assets/assets/ProjectPage-79R3wJW6.js +9 -0
  7. package/assets/assets/{RunRow-RHd8Bd52.js → RunRow-aDzTzGSK.js} +1 -1
  8. package/assets/assets/{RunsPage-BsDqqQFX.js → RunsPage-Dy9oWMBK.js} +1 -1
  9. package/assets/assets/{SettingsPage-CX2LkFDB.js → SettingsPage-DTAs1BrZ.js} +1 -1
  10. package/assets/assets/{TrafficPage-I19b7i9m.js → TrafficPage-B4ADqeKG.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-DOLEAPsc.js → TrafficSourceDetailPage-CFcoL_PR.js} +1 -1
  12. package/assets/assets/{arrow-left-BG9o86__.js → arrow-left-DV9xcX1v.js} +1 -1
  13. package/assets/assets/{extract-error-message-D0cgM2XG.js → extract-error-message-DXtgw8Q8.js} +1 -1
  14. package/assets/assets/{index-BDo9nl4O.css → index-CYA3jd24.css} +1 -1
  15. package/assets/assets/index-H2iFFrr1.js +213 -0
  16. package/assets/assets/{trash-2-C_THWxO_.js → trash-2-DMV6uGU1.js} +1 -1
  17. package/assets/index.html +2 -2
  18. package/dist/{chunk-D7NJUGNQ.js → chunk-3G5B3IMZ.js} +310 -1
  19. package/dist/{chunk-LS6SEZVF.js → chunk-KUPTGRME.js} +4259 -3034
  20. package/dist/{chunk-UFPP5CSN.js → chunk-TJ6SDLXL.js} +4 -4
  21. package/dist/{chunk-NR6OGEV3.js → chunk-VN3CI6K6.js} +3148 -1193
  22. package/dist/cli.js +129 -19
  23. package/dist/index.js +4 -4
  24. package/dist/{intelligence-service-EOUP37XN.js → intelligence-service-V6JYDYGF.js} +2 -2
  25. package/dist/mcp.js +2 -2
  26. package/package.json +9 -9
  27. package/assets/assets/ProjectPage-DsQic9wX.js +0 -8
  28. package/assets/assets/index-CYGBt2f0.js +0 -213
@@ -1 +1 @@
1
- import{c as a}from"./index-CYGBt2f0.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};
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-CYGBt2f0.js"></script>
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-BDo9nl4O.css">
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-LS6SEZVF.js";
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()
@@ -7671,6 +7874,112 @@ var canonryMcpTools = [
7671
7874
  await client2.putKeywords(input.project, uniqueStrings(input.request.keywords));
7672
7875
  }
7673
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
+ }),
7674
7983
  defineTool({
7675
7984
  name: "canonry_run_trigger",
7676
7985
  title: "Trigger run",