@ainyc/canonry 4.92.0 → 4.94.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 (26) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +4 -0
  2. package/assets/agent-workspace/skills/canonry/references/google-business-profile.md +6 -0
  3. package/assets/assets/{BacklinksPage-D3JpcWtH.js → BacklinksPage-FeUApIRv.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-DdwqEX5v.js → ChartPrimitives-DFCM9oRt.js} +1 -1
  5. package/assets/assets/ProjectPage-Dyx8eZf_.js +6 -0
  6. package/assets/assets/{RunRow-c_2jd8iz.js → RunRow-CF4jm8w8.js} +1 -1
  7. package/assets/assets/{RunsPage-D6eM_5tB.js → RunsPage-Dlyl-dmG.js} +1 -1
  8. package/assets/assets/{SettingsPage-DaMc8nxK.js → SettingsPage-DaQ0YNHz.js} +1 -1
  9. package/assets/assets/{TrafficPage-Dw16dcSc.js → TrafficPage-38zf4QS8.js} +1 -1
  10. package/assets/assets/{TrafficSourceDetailPage-Dy9D80dz.js → TrafficSourceDetailPage-DJY18oUo.js} +1 -1
  11. package/assets/assets/{arrow-left-D8UaBG9a.js → arrow-left-CRHf1qtt.js} +1 -1
  12. package/assets/assets/{extract-error-message-CfxCIMNJ.js → extract-error-message-uWeOU6mU.js} +1 -1
  13. package/assets/assets/{index-BA-lh2pG.js → index-B7ZT1i67.js} +73 -73
  14. package/assets/assets/{index-fLUYE9Z5.css → index-DiykVUPr.css} +1 -1
  15. package/assets/assets/{trash-2-j1tX1-Kq.js → trash-2-B1qn8ZLk.js} +1 -1
  16. package/assets/index.html +2 -2
  17. package/dist/{chunk-QYC2N23P.js → chunk-3TTBKG73.js} +69 -5
  18. package/dist/{chunk-HW4GVIQD.js → chunk-K4QOSPBX.js} +37 -2
  19. package/dist/{chunk-VJPVFCZW.js → chunk-PV3RAHMK.js} +19 -0
  20. package/dist/{chunk-IFUHXONX.js → chunk-ZJADMHJ5.js} +207 -63
  21. package/dist/cli.js +57 -9
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-24HCX4SJ.js → intelligence-service-M33PXIWS.js} +2 -2
  24. package/dist/mcp.js +2 -2
  25. package/package.json +9 -9
  26. package/assets/assets/ProjectPage-BPLf4U3A.js +0 -6
package/dist/cli.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  setTelemetrySource,
28
28
  showFirstRunNotice,
29
29
  trackEvent
30
- } from "./chunk-QYC2N23P.js";
30
+ } from "./chunk-3TTBKG73.js";
31
31
  import {
32
32
  CliError,
33
33
  EXIT_SYSTEM_ERROR,
@@ -44,7 +44,7 @@ import {
44
44
  saveConfig,
45
45
  saveConfigPatch,
46
46
  usageError
47
- } from "./chunk-HW4GVIQD.js";
47
+ } from "./chunk-K4QOSPBX.js";
48
48
  import {
49
49
  apiKeys,
50
50
  createClient,
@@ -52,7 +52,7 @@ import {
52
52
  projects,
53
53
  queries,
54
54
  renderReportHtml
55
- } from "./chunk-IFUHXONX.js";
55
+ } from "./chunk-ZJADMHJ5.js";
56
56
  import {
57
57
  BacklinkSources,
58
58
  CcReleaseSyncStatuses,
@@ -77,7 +77,7 @@ import {
77
77
  providerQuotaPolicySchema,
78
78
  resolveProviderInput,
79
79
  winnabilityClassSchema
80
- } from "./chunk-VJPVFCZW.js";
80
+ } from "./chunk-PV3RAHMK.js";
81
81
 
82
82
  // src/cli.ts
83
83
  import { pathToFileURL } from "url";
@@ -3518,6 +3518,31 @@ async function gbpLodging(project, opts) {
3518
3518
  console.log(` ${l.locationName} ${l.populatedGroupCount} attribute group(s)${note}`);
3519
3519
  }
3520
3520
  }
3521
+ async function gbpAttributes(project, opts) {
3522
+ const client = getClient7();
3523
+ const response = await client.listGbpAttributes(project, { locationName: opts.location });
3524
+ if (isMachineFormat(opts.format)) {
3525
+ console.log(JSON.stringify(response, null, 2));
3526
+ return;
3527
+ }
3528
+ if (response.attributes.length === 0) {
3529
+ console.log('No attributes data. Run "canonry gbp sync" to capture owner-set attributes.');
3530
+ return;
3531
+ }
3532
+ console.log(`${response.total} location(s) with owner-set attributes:`);
3533
+ for (const a of response.attributes) {
3534
+ console.log(` ${a.locationName} ${a.attributeCount} attribute(s)`);
3535
+ for (const attr of a.attributes) {
3536
+ const key = attr.name.replace(/^attributes\//, "");
3537
+ const val = [
3538
+ ...attr.values.map(String),
3539
+ ...attr.unsetValues.map((v) => `unset:${v}`),
3540
+ ...attr.uris
3541
+ ].join(", ");
3542
+ console.log(` ${key}: ${val}`);
3543
+ }
3544
+ }
3545
+ }
3521
3546
  async function gbpPlaces(project, opts) {
3522
3547
  const client = getClient7();
3523
3548
  const response = await client.listGbpPlaces(project, { locationName: opts.location });
@@ -3733,6 +3758,17 @@ var GBP_CLI_COMMANDS = [
3733
3758
  await gbpLodging(project, { location: getString(input.values, "location"), format: input.format });
3734
3759
  }
3735
3760
  },
3761
+ {
3762
+ path: ["gbp", "attributes"],
3763
+ usage: "canonry gbp attributes <project> [--location <name>] [--format json]",
3764
+ options: {
3765
+ location: stringOption()
3766
+ },
3767
+ run: async (input) => {
3768
+ const project = requireProject(input, "gbp.attributes", "canonry gbp attributes <project> [--location <name>] [--format json]");
3769
+ await gbpAttributes(project, { location: getString(input.values, "location"), format: input.format });
3770
+ }
3771
+ },
3736
3772
  {
3737
3773
  path: ["gbp", "places"],
3738
3774
  usage: "canonry gbp places <project> [--location <name>] [--format json]",
@@ -9262,7 +9298,13 @@ var SNAPSHOT_CLI_COMMANDS = [
9262
9298
  // src/commands/insights.ts
9263
9299
  async function listInsights(project, opts) {
9264
9300
  const client = createApiClient();
9265
- const insights = await client.getInsights(project, { dismissed: opts.dismissed, runId: opts.runId });
9301
+ const insights = await client.getInsights(project, {
9302
+ dismissed: opts.dismissed,
9303
+ runId: opts.runId,
9304
+ type: opts.type,
9305
+ severity: opts.severity,
9306
+ limit: opts.limit
9307
+ });
9266
9308
  if (opts.format === "json") {
9267
9309
  console.log(JSON.stringify(insights, null, 2));
9268
9310
  return;
@@ -9667,17 +9709,23 @@ function printGaps2(data) {
9667
9709
  var INTELLIGENCE_CLI_COMMANDS = [
9668
9710
  {
9669
9711
  path: ["insights"],
9670
- usage: "canonry insights <project> [--dismissed] [--run-id <id>] [--format json]",
9712
+ usage: "canonry insights <project> [--type <type|prefix*>] [--severity <low|medium|high|critical>] [--limit <n>] [--dismissed] [--run-id <id>] [--format json]",
9671
9713
  options: {
9672
9714
  dismissed: { type: "boolean" },
9673
- "run-id": { type: "string" }
9715
+ "run-id": { type: "string" },
9716
+ type: { type: "string" },
9717
+ severity: { type: "string" },
9718
+ limit: { type: "string" }
9674
9719
  },
9675
9720
  run: async (input) => {
9676
- const usage = "canonry insights <project> [--dismissed] [--run-id <id>] [--format json]";
9721
+ const usage = "canonry insights <project> [--type <type|prefix*>] [--severity <low|medium|high|critical>] [--limit <n>] [--dismissed] [--run-id <id>] [--format json]";
9677
9722
  const project = requireProject(input, "insights", usage);
9678
9723
  const dismissed = input.values.dismissed === true;
9679
9724
  const runId = getString(input.values, "run-id");
9680
- await listInsights(project, { dismissed, runId, format: input.format });
9725
+ const type = getString(input.values, "type");
9726
+ const severity = getString(input.values, "severity");
9727
+ const limit = parseIntegerOption(input, "limit", { message: "limit must be an integer", usage, command: "insights" });
9728
+ await listInsights(project, { dismissed, runId, type, severity, limit, format: input.format });
9681
9729
  }
9682
9730
  },
9683
9731
  {
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-QYC2N23P.js";
3
+ } from "./chunk-3TTBKG73.js";
4
4
  import {
5
5
  loadConfig
6
- } from "./chunk-HW4GVIQD.js";
7
- import "./chunk-IFUHXONX.js";
8
- import "./chunk-VJPVFCZW.js";
6
+ } from "./chunk-K4QOSPBX.js";
7
+ import "./chunk-ZJADMHJ5.js";
8
+ import "./chunk-PV3RAHMK.js";
9
9
  export {
10
10
  createServer,
11
11
  loadConfig
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  IntelligenceService
3
- } from "./chunk-IFUHXONX.js";
4
- import "./chunk-VJPVFCZW.js";
3
+ } from "./chunk-ZJADMHJ5.js";
4
+ import "./chunk-PV3RAHMK.js";
5
5
  export {
6
6
  IntelligenceService
7
7
  };
package/dist/mcp.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  PACKAGE_VERSION,
4
4
  canonryMcpTools,
5
5
  createApiClient
6
- } from "./chunk-HW4GVIQD.js";
6
+ } from "./chunk-K4QOSPBX.js";
7
7
  import {
8
8
  isReadOnlyKey
9
- } from "./chunk-VJPVFCZW.js";
9
+ } from "./chunk-PV3RAHMK.js";
10
10
 
11
11
  // src/mcp/cli.ts
12
12
  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.92.0",
3
+ "version": "4.94.0",
4
4
  "type": "module",
5
5
  "description": "Agent-first open-source AEO operating platform - track how answer engines cite your domain",
6
6
  "license": "FSL-1.1-ALv2",
@@ -63,26 +63,26 @@
63
63
  "tsup": "^8.5.1",
64
64
  "tsx": "^4.19.0",
65
65
  "@ainyc/canonry-api-client": "0.0.0",
66
- "@ainyc/canonry-api-routes": "0.0.0",
67
66
  "@ainyc/canonry-contracts": "0.0.0",
68
- "@ainyc/canonry-integration-bing": "0.0.0",
69
67
  "@ainyc/canonry-config": "0.0.0",
70
- "@ainyc/canonry-integration-openai-ads": "0.0.0",
68
+ "@ainyc/canonry-api-routes": "0.0.0",
71
69
  "@ainyc/canonry-db": "0.0.0",
70
+ "@ainyc/canonry-integration-bing": "0.0.0",
72
71
  "@ainyc/canonry-integration-cloud-run": "0.0.0",
73
72
  "@ainyc/canonry-integration-commoncrawl": "0.0.0",
73
+ "@ainyc/canonry-integration-openai-ads": "0.0.0",
74
+ "@ainyc/canonry-integration-google-business-profile": "0.0.0",
74
75
  "@ainyc/canonry-integration-google": "0.0.0",
75
- "@ainyc/canonry-integration-google-places": "0.0.0",
76
76
  "@ainyc/canonry-integration-traffic": "0.0.0",
77
- "@ainyc/canonry-integration-google-business-profile": "0.0.0",
78
77
  "@ainyc/canonry-intelligence": "0.0.0",
78
+ "@ainyc/canonry-integration-google-places": "0.0.0",
79
79
  "@ainyc/canonry-provider-cdp": "0.0.0",
80
80
  "@ainyc/canonry-integration-wordpress": "0.0.0",
81
81
  "@ainyc/canonry-provider-claude": "0.0.0",
82
- "@ainyc/canonry-provider-local": "0.0.0",
83
- "@ainyc/canonry-provider-openai": "0.0.0",
84
82
  "@ainyc/canonry-provider-gemini": "0.0.0",
85
- "@ainyc/canonry-provider-perplexity": "0.0.0"
83
+ "@ainyc/canonry-provider-openai": "0.0.0",
84
+ "@ainyc/canonry-provider-perplexity": "0.0.0",
85
+ "@ainyc/canonry-provider-local": "0.0.0"
86
86
  },
87
87
  "scripts": {
88
88
  "build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",