@ainyc/canonry 4.91.1 → 4.93.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/aero/references/regression-playbook.md +1 -0
- package/assets/agent-workspace/skills/canonry/references/google-business-profile.md +7 -0
- package/assets/assets/{BacklinksPage-DHC1po5Q.js → BacklinksPage-nkgAbbjk.js} +1 -1
- package/assets/assets/{ChartPrimitives-Cu2xEVle.js → ChartPrimitives-kdfylr1f.js} +1 -1
- package/assets/assets/ProjectPage-BQYmq7FP.js +6 -0
- package/assets/assets/{RunRow-BPqbBlXl.js → RunRow-P-n5OkiY.js} +1 -1
- package/assets/assets/{RunsPage-BJx3_Nel.js → RunsPage-DfBb4WCS.js} +1 -1
- package/assets/assets/{SettingsPage-CXTIHdsv.js → SettingsPage-CRGuFgeK.js} +1 -1
- package/assets/assets/{TrafficPage-iibCIBqX.js → TrafficPage-CMqP0AGZ.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-WU30E_59.js → TrafficSourceDetailPage-XRGzkKWk.js} +1 -1
- package/assets/assets/{arrow-left-Ds_f14R8.js → arrow-left-BCR55g4n.js} +1 -1
- package/assets/assets/{extract-error-message-D250utEX.js → extract-error-message-BG1AlucT.js} +1 -1
- package/assets/assets/{index-qiysJOcG.js → index-BPjIZIDO.js} +73 -73
- package/assets/assets/{index-fLUYE9Z5.css → index-DiykVUPr.css} +1 -1
- package/assets/assets/{trash-2-CcVWAeec.js → trash-2-Cme1gNjU.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-KFJPJBW3.js → chunk-ADTLQHJY.js} +69 -5
- package/dist/{chunk-WMBOHP7E.js → chunk-AUQNKEHV.js} +20 -0
- package/dist/{chunk-4KQYRCVC.js → chunk-KBDQ5OE4.js} +181 -56
- package/dist/{chunk-6RVUSM4Y.js → chunk-PK46TKGM.js} +33 -1
- package/dist/cli.js +36 -4
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-QB6HQRWU.js → intelligence-service-4ATCJITP.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +10 -10
- package/assets/assets/ProjectPage-DXYcaMVO.js +0 -6
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
trafficConnectVercelRequestSchema,
|
|
24
24
|
trafficConnectWordpressRequestSchema,
|
|
25
25
|
trafficEventKindSchema
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-AUQNKEHV.js";
|
|
27
27
|
|
|
28
28
|
// src/config.ts
|
|
29
29
|
import fs from "fs";
|
|
@@ -2194,6 +2194,18 @@ var getApiV1ProjectsByNameGbpLodging = (options) => {
|
|
|
2194
2194
|
...options
|
|
2195
2195
|
});
|
|
2196
2196
|
};
|
|
2197
|
+
var getApiV1ProjectsByNameGbpAttributes = (options) => {
|
|
2198
|
+
return (options.client ?? client).get({
|
|
2199
|
+
security: [
|
|
2200
|
+
{
|
|
2201
|
+
scheme: "bearer",
|
|
2202
|
+
type: "http"
|
|
2203
|
+
}
|
|
2204
|
+
],
|
|
2205
|
+
url: "/api/v1/projects/{name}/gbp/attributes",
|
|
2206
|
+
...options
|
|
2207
|
+
});
|
|
2208
|
+
};
|
|
2197
2209
|
var getApiV1ProjectsByNameGbpPlaces = (options) => {
|
|
2198
2210
|
return (options.client ?? client).get({
|
|
2199
2211
|
security: [
|
|
@@ -4353,6 +4365,15 @@ var ApiClient = class {
|
|
|
4353
4365
|
})
|
|
4354
4366
|
);
|
|
4355
4367
|
}
|
|
4368
|
+
async listGbpAttributes(project, opts) {
|
|
4369
|
+
return this.invoke(
|
|
4370
|
+
() => getApiV1ProjectsByNameGbpAttributes({
|
|
4371
|
+
client: this.heyClient,
|
|
4372
|
+
path: { name: project },
|
|
4373
|
+
query: opts?.locationName ? { locationName: opts.locationName } : void 0
|
|
4374
|
+
})
|
|
4375
|
+
);
|
|
4376
|
+
}
|
|
4356
4377
|
async listGbpPlaces(project, opts) {
|
|
4357
4378
|
return this.invoke(
|
|
4358
4379
|
() => getApiV1ProjectsByNameGbpPlaces({
|
|
@@ -6299,6 +6320,17 @@ var canonryMcpTools = [
|
|
|
6299
6320
|
openApiOperations: ["GET /api/v1/projects/{name}/gbp/lodging"],
|
|
6300
6321
|
handler: (client2, input) => client2.listGbpLodging(input.project, compactStringParams(input, ["locationName"]))
|
|
6301
6322
|
}),
|
|
6323
|
+
defineTool({
|
|
6324
|
+
name: "canonry_gbp_attributes",
|
|
6325
|
+
title: "Get GBP owner-set attributes",
|
|
6326
|
+
description: "List the latest Google Business Profile owner-set attribute snapshot per location: the generic amenity / service / accessibility / identity / social-URL tags the owner has set (e.g. has_onsite_services, offers_online_estimates, is_owned_by_women, wheelchair accessibility, url_instagram). Works for every business category, unlike canonry_gbp_lodging (hotels only). Returns only attributes the owner has set, so attributeCount is a real, owner-readable completeness signal (not a verify-nudge).",
|
|
6327
|
+
access: "read",
|
|
6328
|
+
tier: "gbp",
|
|
6329
|
+
inputSchema: gbpLocationScopedInputSchema,
|
|
6330
|
+
annotations: readAnnotations(),
|
|
6331
|
+
openApiOperations: ["GET /api/v1/projects/{name}/gbp/attributes"],
|
|
6332
|
+
handler: (client2, input) => client2.listGbpAttributes(input.project, compactStringParams(input, ["locationName"]))
|
|
6333
|
+
}),
|
|
6302
6334
|
defineTool({
|
|
6303
6335
|
name: "canonry_gbp_places",
|
|
6304
6336
|
title: "Get GBP Places rendered-listing data",
|
package/dist/cli.js
CHANGED
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
setTelemetrySource,
|
|
28
28
|
showFirstRunNotice,
|
|
29
29
|
trackEvent
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-ADTLQHJY.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-
|
|
47
|
+
} from "./chunk-PK46TKGM.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-
|
|
55
|
+
} from "./chunk-KBDQ5OE4.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-
|
|
80
|
+
} from "./chunk-AUQNKEHV.js";
|
|
81
81
|
|
|
82
82
|
// src/cli.ts
|
|
83
83
|
import { pathToFileURL } from "url";
|
|
@@ -3518,6 +3518,27 @@ 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 = attr.uris.length > 0 ? attr.uris.join(", ") : attr.values.join(", ");
|
|
3538
|
+
console.log(` ${key}: ${val}`);
|
|
3539
|
+
}
|
|
3540
|
+
}
|
|
3541
|
+
}
|
|
3521
3542
|
async function gbpPlaces(project, opts) {
|
|
3522
3543
|
const client = getClient7();
|
|
3523
3544
|
const response = await client.listGbpPlaces(project, { locationName: opts.location });
|
|
@@ -3733,6 +3754,17 @@ var GBP_CLI_COMMANDS = [
|
|
|
3733
3754
|
await gbpLodging(project, { location: getString(input.values, "location"), format: input.format });
|
|
3734
3755
|
}
|
|
3735
3756
|
},
|
|
3757
|
+
{
|
|
3758
|
+
path: ["gbp", "attributes"],
|
|
3759
|
+
usage: "canonry gbp attributes <project> [--location <name>] [--format json]",
|
|
3760
|
+
options: {
|
|
3761
|
+
location: stringOption()
|
|
3762
|
+
},
|
|
3763
|
+
run: async (input) => {
|
|
3764
|
+
const project = requireProject(input, "gbp.attributes", "canonry gbp attributes <project> [--location <name>] [--format json]");
|
|
3765
|
+
await gbpAttributes(project, { location: getString(input.values, "location"), format: input.format });
|
|
3766
|
+
}
|
|
3767
|
+
},
|
|
3736
3768
|
{
|
|
3737
3769
|
path: ["gbp", "places"],
|
|
3738
3770
|
usage: "canonry gbp places <project> [--location <name>] [--format json]",
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADTLQHJY.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-PK46TKGM.js";
|
|
7
|
+
import "./chunk-KBDQ5OE4.js";
|
|
8
|
+
import "./chunk-AUQNKEHV.js";
|
|
9
9
|
export {
|
|
10
10
|
createServer,
|
|
11
11
|
loadConfig
|
package/dist/mcp.js
CHANGED
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
PACKAGE_VERSION,
|
|
4
4
|
canonryMcpTools,
|
|
5
5
|
createApiClient
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PK46TKGM.js";
|
|
7
7
|
import {
|
|
8
8
|
isReadOnlyKey
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AUQNKEHV.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.
|
|
3
|
+
"version": "4.93.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-config": "0.0.0",
|
|
67
|
-
"@ainyc/canonry-db": "0.0.0",
|
|
68
66
|
"@ainyc/canonry-api-routes": "0.0.0",
|
|
69
|
-
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
70
67
|
"@ainyc/canonry-contracts": "0.0.0",
|
|
68
|
+
"@ainyc/canonry-config": "0.0.0",
|
|
69
|
+
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
71
70
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
72
71
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
73
|
-
"@ainyc/canonry-
|
|
72
|
+
"@ainyc/canonry-db": "0.0.0",
|
|
74
73
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
74
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
75
75
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
76
76
|
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
77
|
-
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
78
|
-
"@ainyc/canonry-intelligence": "0.0.0",
|
|
79
77
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
78
|
+
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
80
79
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
80
|
+
"@ainyc/canonry-intelligence": "0.0.0",
|
|
81
|
+
"@ainyc/canonry-provider-local": "0.0.0",
|
|
81
82
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
83
|
+
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
82
84
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
83
|
-
"@ainyc/canonry-provider-
|
|
84
|
-
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
85
|
-
"@ainyc/canonry-provider-openai": "0.0.0"
|
|
85
|
+
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
86
86
|
},
|
|
87
87
|
"scripts": {
|
|
88
88
|
"build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",
|