@ainyc/canonry 4.72.3 → 4.74.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 (27) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +17 -0
  2. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +56 -3
  3. package/assets/assets/{BacklinksPage-CjfpwZEH.js → BacklinksPage-ClgP7CUd.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-Ckf2FrUy.js → ChartPrimitives-PGDrQBXP.js} +1 -1
  5. package/assets/assets/ProjectPage-xfLeh2vB.js +6 -0
  6. package/assets/assets/{RunRow-BuFyG0V_.js → RunRow-DL-lUm35.js} +1 -1
  7. package/assets/assets/{RunsPage-D-pr000K.js → RunsPage-BCL_lU-R.js} +1 -1
  8. package/assets/assets/{SettingsPage-CiaapCYn.js → SettingsPage-D67UQYJa.js} +1 -1
  9. package/assets/assets/{TrafficPage-B40xytJD.js → TrafficPage-DVRcPxCk.js} +1 -1
  10. package/assets/assets/{TrafficSourceDetailPage-7hHem-gM.js → TrafficSourceDetailPage-JzX1fhGQ.js} +1 -1
  11. package/assets/assets/{extract-error-message-3GkDsu1h.js → extract-error-message-Cia_CilL.js} +1 -1
  12. package/assets/assets/index-CFVX11lK.css +1 -0
  13. package/assets/assets/{index-BVdH2O9w.js → index-DHg9_-PB.js} +118 -118
  14. package/assets/assets/{server-traffic-CsgPsudZ.js → server-traffic-GBmLS3L7.js} +1 -1
  15. package/assets/assets/{trash-2-B8Ipf9rI.js → trash-2-Bk7PYGBN.js} +1 -1
  16. package/assets/index.html +2 -2
  17. package/dist/{chunk-JXFNERK4.js → chunk-A7JX3FZB.js} +1094 -995
  18. package/dist/{chunk-SIB4NMEH.js → chunk-MRC4JMIH.js} +369 -176
  19. package/dist/{chunk-ZUBBADMR.js → chunk-W6GBIRFA.js} +162 -1
  20. package/dist/{chunk-HSX32G47.js → chunk-ZRZHIS22.js} +414 -73
  21. package/dist/cli.js +236 -30
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-ZW3ARLJT.js → intelligence-service-GPO2VMEC.js} +2 -2
  24. package/dist/mcp.js +2 -2
  25. package/package.json +8 -8
  26. package/assets/assets/ProjectPage-DZeplYeC.js +0 -6
  27. package/assets/assets/index-B3nENtU0.css +0 -1
@@ -22,7 +22,7 @@ import {
22
22
  trafficConnectVercelRequestSchema,
23
23
  trafficConnectWordpressRequestSchema,
24
24
  trafficEventKindSchema
25
- } from "./chunk-JXFNERK4.js";
25
+ } from "./chunk-A7JX3FZB.js";
26
26
 
27
27
  // src/config.ts
28
28
  import fs from "fs";
@@ -3345,6 +3345,58 @@ var postApiV1ProjectsByNameDiscoverSessionsByIdPromote = (options) => {
3345
3345
  }
3346
3346
  });
3347
3347
  };
3348
+ var getApiV1ProjectsByNameTechnicalAeo = (options) => {
3349
+ return (options.client ?? client).get({
3350
+ security: [
3351
+ {
3352
+ scheme: "bearer",
3353
+ type: "http"
3354
+ }
3355
+ ],
3356
+ url: "/api/v1/projects/{name}/technical-aeo",
3357
+ ...options
3358
+ });
3359
+ };
3360
+ var getApiV1ProjectsByNameTechnicalAeoPages = (options) => {
3361
+ return (options.client ?? client).get({
3362
+ security: [
3363
+ {
3364
+ scheme: "bearer",
3365
+ type: "http"
3366
+ }
3367
+ ],
3368
+ url: "/api/v1/projects/{name}/technical-aeo/pages",
3369
+ ...options
3370
+ });
3371
+ };
3372
+ var getApiV1ProjectsByNameTechnicalAeoTrend = (options) => {
3373
+ return (options.client ?? client).get({
3374
+ security: [
3375
+ {
3376
+ scheme: "bearer",
3377
+ type: "http"
3378
+ }
3379
+ ],
3380
+ url: "/api/v1/projects/{name}/technical-aeo/trend",
3381
+ ...options
3382
+ });
3383
+ };
3384
+ var postApiV1ProjectsByNameTechnicalAeoRuns = (options) => {
3385
+ return (options.client ?? client).post({
3386
+ security: [
3387
+ {
3388
+ scheme: "bearer",
3389
+ type: "http"
3390
+ }
3391
+ ],
3392
+ url: "/api/v1/projects/{name}/technical-aeo/runs",
3393
+ ...options,
3394
+ headers: {
3395
+ "Content-Type": "application/json",
3396
+ ...options.headers
3397
+ }
3398
+ });
3399
+ };
3348
3400
  var deleteApiV1ProjectsByNameAgentTranscript = (options) => {
3349
3401
  return (options.client ?? client).delete({
3350
3402
  security: [
@@ -4539,6 +4591,44 @@ var ApiClient = class {
4539
4591
  })
4540
4592
  );
4541
4593
  }
4594
+ // ── Technical AEO (site-audit) ──────────────────────────────────────────
4595
+ async getTechnicalAeoScore(project) {
4596
+ return this.invoke(
4597
+ () => getApiV1ProjectsByNameTechnicalAeo({ client: this.heyClient, path: { name: project } })
4598
+ );
4599
+ }
4600
+ async getTechnicalAeoPages(project, opts) {
4601
+ return this.invoke(
4602
+ () => getApiV1ProjectsByNameTechnicalAeoPages({
4603
+ client: this.heyClient,
4604
+ path: { name: project },
4605
+ query: {
4606
+ status: opts?.status,
4607
+ sort: opts?.sort,
4608
+ limit: opts?.limit !== void 0 ? String(opts.limit) : void 0,
4609
+ offset: opts?.offset !== void 0 ? String(opts.offset) : void 0
4610
+ }
4611
+ })
4612
+ );
4613
+ }
4614
+ async getTechnicalAeoTrend(project, opts) {
4615
+ return this.invoke(
4616
+ () => getApiV1ProjectsByNameTechnicalAeoTrend({
4617
+ client: this.heyClient,
4618
+ path: { name: project },
4619
+ query: { limit: opts?.limit !== void 0 ? String(opts.limit) : void 0 }
4620
+ })
4621
+ );
4622
+ }
4623
+ async triggerSiteAudit(project, body) {
4624
+ return this.invoke(
4625
+ () => postApiV1ProjectsByNameTechnicalAeoRuns({
4626
+ client: this.heyClient,
4627
+ path: { name: project },
4628
+ body: body ?? {}
4629
+ })
4630
+ );
4631
+ }
4542
4632
  // ── WordPress ──────────────────────────────────────────────────────────
4543
4633
  async wordpressConnect(project, body) {
4544
4634
  return this.invoke(
@@ -5190,6 +5280,25 @@ var discoveryPromoteInputSchema = z2.object({
5190
5280
  competitorTypes: z2.array(discoveryCompetitorTypeSchema).min(1).optional().describe("Which classified competitor types to merge. Omitted promotes direct-competitor only; pass an explicit list to also adopt editorial-media channels or to recover legacy unknown entries. Ignored when includeCompetitors is false.")
5191
5281
  }).optional()
5192
5282
  });
5283
+ var technicalAeoScoreInputSchema = z2.object({
5284
+ project: projectNameSchema
5285
+ });
5286
+ var technicalAeoPagesInputSchema = z2.object({
5287
+ project: projectNameSchema,
5288
+ status: z2.enum(["success", "error"]).optional().describe("Filter to successfully-audited or errored pages."),
5289
+ sort: z2.enum(["score-asc", "score-desc", "url"]).optional().describe("Sort order. Defaults to score-asc (worst pages first)."),
5290
+ limit: z2.number().int().positive().max(500).optional(),
5291
+ offset: z2.number().int().nonnegative().optional()
5292
+ });
5293
+ var technicalAeoTrendInputSchema = z2.object({
5294
+ project: projectNameSchema,
5295
+ limit: z2.number().int().positive().max(365).optional()
5296
+ });
5297
+ var technicalAeoRunInputSchema = z2.object({
5298
+ project: projectNameSchema,
5299
+ sitemapUrl: z2.string().url().optional().describe("Override the sitemap URL. Defaults to https://<canonicalDomain>/sitemap.xml."),
5300
+ limit: z2.number().int().positive().max(2e3).optional().describe("Cap pages audited (highest sitemap <priority> first).")
5301
+ });
5193
5302
  var AGENT_WEBHOOK_EVENTS = [
5194
5303
  notificationEventSchema.enum["run.completed"],
5195
5304
  notificationEventSchema.enum["insight.critical"],
@@ -6403,6 +6512,58 @@ var canonryMcpTools = [
6403
6512
  annotations: writeAnnotations({ idempotentHint: true }),
6404
6513
  openApiOperations: ["POST /api/v1/projects/{name}/discover/sessions/{id}/promote"],
6405
6514
  handler: (client2, input) => client2.promoteDiscovery(input.project, input.sessionId, input.request)
6515
+ }),
6516
+ defineTool({
6517
+ name: "canonry_technical_aeo_score",
6518
+ title: "Get Technical AEO score",
6519
+ description: "Get the Technical AEO scorecard for a project: the latest site-audit aggregate 0\u2013100 score, per-factor site-level averages (with pass/partial/fail distribution), cross-cutting issues, prioritized fixes, and the delta vs the previous audit. When `hasData` is false the project has never been audited \u2014 call canonry_technical_aeo_run first.",
6520
+ access: "read",
6521
+ tier: "monitoring",
6522
+ inputSchema: technicalAeoScoreInputSchema,
6523
+ annotations: readAnnotations(),
6524
+ openApiOperations: ["GET /api/v1/projects/{name}/technical-aeo"],
6525
+ handler: (client2, input) => client2.getTechnicalAeoScore(input.project)
6526
+ }),
6527
+ defineTool({
6528
+ name: "canonry_technical_aeo_pages",
6529
+ title: "List Technical AEO pages",
6530
+ description: "List the per-page breakdown of the latest site-audit run (paginated). Filter status=error to surface unreachable pages, or sort score-asc (default) to surface the worst-scoring pages first. Use after canonry_technical_aeo_score to drill into which pages drag the site score down.",
6531
+ access: "read",
6532
+ tier: "monitoring",
6533
+ inputSchema: technicalAeoPagesInputSchema,
6534
+ annotations: readAnnotations(),
6535
+ openApiOperations: ["GET /api/v1/projects/{name}/technical-aeo/pages"],
6536
+ handler: (client2, input) => client2.getTechnicalAeoPages(input.project, {
6537
+ status: input.status,
6538
+ sort: input.sort,
6539
+ limit: input.limit,
6540
+ offset: input.offset
6541
+ })
6542
+ }),
6543
+ defineTool({
6544
+ name: "canonry_technical_aeo_trend",
6545
+ title: "Get Technical AEO trend",
6546
+ description: 'Get the aggregate Technical AEO score over time (oldest-first) across past site-audit runs. Use to answer "is our technical AEO improving?".',
6547
+ access: "read",
6548
+ tier: "monitoring",
6549
+ inputSchema: technicalAeoTrendInputSchema,
6550
+ annotations: readAnnotations(),
6551
+ openApiOperations: ["GET /api/v1/projects/{name}/technical-aeo/trend"],
6552
+ handler: (client2, input) => client2.getTechnicalAeoTrend(input.project, input.limit !== void 0 ? { limit: input.limit } : void 0)
6553
+ }),
6554
+ defineTool({
6555
+ name: "canonry_technical_aeo_run",
6556
+ title: "Run Technical AEO site audit",
6557
+ description: "Trigger a site-audit run: crawl the project sitemap and audit every reachable page across the aeo-audit ranking factors. Returns {runId, status}; the audit runs in the background (a large site can take minutes). Idempotent \u2014 if a site-audit is already in flight it returns that run. Poll canonry_run_get with the returned runId, then read canonry_technical_aeo_score.",
6558
+ access: "write",
6559
+ tier: "monitoring",
6560
+ inputSchema: technicalAeoRunInputSchema,
6561
+ annotations: writeAnnotations({ idempotentHint: false, openWorldHint: true }),
6562
+ openApiOperations: ["POST /api/v1/projects/{name}/technical-aeo/runs"],
6563
+ handler: (client2, input) => client2.triggerSiteAudit(input.project, {
6564
+ sitemapUrl: input.sitemapUrl,
6565
+ limit: input.limit
6566
+ })
6406
6567
  })
6407
6568
  ];
6408
6569
  var CANONRY_MCP_TOOL_COUNT = canonryMcpTools.length;