@ainyc/canonry 4.90.0 → 4.91.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 +4 -2
- package/assets/assets/{BacklinksPage-CzZbUMMc.js → BacklinksPage-DHC1po5Q.js} +1 -1
- package/assets/assets/{ChartPrimitives-BBcVCGyK.js → ChartPrimitives-Cu2xEVle.js} +1 -1
- package/assets/assets/{ProjectPage-BZwzpRBL.js → ProjectPage-DXYcaMVO.js} +1 -1
- package/assets/assets/{RunRow-B-Xzc9el.js → RunRow-BPqbBlXl.js} +1 -1
- package/assets/assets/{RunsPage-idZt03Qs.js → RunsPage-BJx3_Nel.js} +1 -1
- package/assets/assets/{SettingsPage-BGMJxf9N.js → SettingsPage-CXTIHdsv.js} +1 -1
- package/assets/assets/{TrafficPage-UpFu1vki.js → TrafficPage-iibCIBqX.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-m0OEVrkk.js → TrafficSourceDetailPage-WU30E_59.js} +1 -1
- package/assets/assets/{arrow-left-Cgp2_UfR.js → arrow-left-Ds_f14R8.js} +1 -1
- package/assets/assets/{extract-error-message-BiiNM-57.js → extract-error-message-D250utEX.js} +1 -1
- package/assets/assets/{index-DPPOgIIL.js → index-qiysJOcG.js} +3 -3
- package/assets/assets/{trash-2-Bm_IgAE2.js → trash-2-CcVWAeec.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-I4FR66PU.js → chunk-2SO5ZS4S.js} +4 -4
- package/dist/{chunk-XG7JKKTC.js → chunk-6RVUSM4Y.js} +2 -2
- package/dist/{chunk-KO3T36E5.js → chunk-AFSVCKFI.js} +51 -5
- package/dist/{chunk-PL2ODHUC.js → chunk-WMBOHP7E.js} +13 -0
- package/dist/cli.js +6 -4
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-DZK4FOAJ.js → intelligence-service-MHTYZ632.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c}from"./index-
|
|
1
|
+
import{c}from"./index-qiysJOcG.js";const a=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],h=c("circle-check",a);const e=[["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"}]],n=c("circle-question-mark",e);const o=[["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"}]],s=c("download",o);const t=[["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"}]],r=c("trash-2",t);export{h as C,s as D,r as T,n as a};
|
package/assets/index.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
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-qiysJOcG.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-Dq7p98wZ.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-B57xfQbP.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-ClRVR6aX.js">
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
loadConfig,
|
|
10
10
|
loadConfigRaw,
|
|
11
11
|
saveConfigPatch
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6RVUSM4Y.js";
|
|
13
13
|
import {
|
|
14
14
|
CC_CACHE_DIR,
|
|
15
15
|
DUCKDB_SPEC,
|
|
@@ -104,7 +104,7 @@ import {
|
|
|
104
104
|
siteAuditPages,
|
|
105
105
|
siteAuditSnapshots,
|
|
106
106
|
usageCounters
|
|
107
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-AFSVCKFI.js";
|
|
108
108
|
import {
|
|
109
109
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
110
110
|
AGENT_PROVIDER_IDS,
|
|
@@ -164,7 +164,7 @@ import {
|
|
|
164
164
|
validationError,
|
|
165
165
|
winnabilityClassLabel,
|
|
166
166
|
withRetry
|
|
167
|
-
} from "./chunk-
|
|
167
|
+
} from "./chunk-WMBOHP7E.js";
|
|
168
168
|
|
|
169
169
|
// src/telemetry.ts
|
|
170
170
|
import crypto from "crypto";
|
|
@@ -6323,7 +6323,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
6323
6323
|
return result;
|
|
6324
6324
|
}
|
|
6325
6325
|
async function backfillInsightsCommand(project, opts) {
|
|
6326
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
6326
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-MHTYZ632.js");
|
|
6327
6327
|
const config = loadConfig();
|
|
6328
6328
|
const db = createClient(config.database);
|
|
6329
6329
|
migrate(db);
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
trafficConnectVercelRequestSchema,
|
|
24
24
|
trafficConnectWordpressRequestSchema,
|
|
25
25
|
trafficEventKindSchema
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-WMBOHP7E.js";
|
|
27
27
|
|
|
28
28
|
// src/config.ts
|
|
29
29
|
import fs from "fs";
|
|
@@ -6313,7 +6313,7 @@ var canonryMcpTools = [
|
|
|
6313
6313
|
defineTool({
|
|
6314
6314
|
name: "canonry_gbp_summary",
|
|
6315
6315
|
title: "Get GBP local-AEO summary",
|
|
6316
|
-
description: "Composite Google Business Profile summary for a project: performance totals + 7d deltas, keyword thresholded %, place-action CTA presence, and
|
|
6316
|
+
description: "Composite Google Business Profile summary for a project: performance totals + 7d deltas, keyword thresholded %, place-action CTA presence, lodging coverage, and owner-content profile completeness (how many selected locations populate secondary categories / description / service area / hours / phone, plus closed-status counts). All derived numbers computed server-side.",
|
|
6317
6317
|
access: "read",
|
|
6318
6318
|
tier: "gbp",
|
|
6319
6319
|
inputSchema: gbpLocationScopedInputSchema,
|
|
@@ -258,7 +258,7 @@ import {
|
|
|
258
258
|
wordpressSchemaDeployResultDtoSchema,
|
|
259
259
|
wordpressSchemaStatusResultDtoSchema,
|
|
260
260
|
wordpressStatusDtoSchema
|
|
261
|
-
} from "./chunk-
|
|
261
|
+
} from "./chunk-WMBOHP7E.js";
|
|
262
262
|
|
|
263
263
|
// src/intelligence-service.ts
|
|
264
264
|
import { eq as eq37, desc as desc18, asc as asc5, and as and27, ne as ne5, or as or5, inArray as inArray14, gte as gte7, lte as lte4 } from "drizzle-orm";
|
|
@@ -18628,6 +18628,38 @@ function summarizeLodging(rows) {
|
|
|
18628
18628
|
emptyLodgingCount: rows.length - populatedLodgingCount
|
|
18629
18629
|
};
|
|
18630
18630
|
}
|
|
18631
|
+
function summarizeProfileCompleteness(rows) {
|
|
18632
|
+
let withSecondaryCategories = 0;
|
|
18633
|
+
let secondaryCategoryTotal = 0;
|
|
18634
|
+
let withDescription = 0;
|
|
18635
|
+
let withServiceArea = 0;
|
|
18636
|
+
let withHours = 0;
|
|
18637
|
+
let withPrimaryPhone = 0;
|
|
18638
|
+
let permanentlyClosed = 0;
|
|
18639
|
+
let temporarilyClosed = 0;
|
|
18640
|
+
for (const r of rows) {
|
|
18641
|
+
const secondaryCount = r.additionalCategories?.length ?? 0;
|
|
18642
|
+
if (secondaryCount > 0) withSecondaryCategories++;
|
|
18643
|
+
secondaryCategoryTotal += secondaryCount;
|
|
18644
|
+
if ((r.description ?? "").trim().length > 0) withDescription++;
|
|
18645
|
+
if (r.serviceArea != null) withServiceArea++;
|
|
18646
|
+
if (r.regularHours != null) withHours++;
|
|
18647
|
+
if ((r.primaryPhone ?? "").trim().length > 0) withPrimaryPhone++;
|
|
18648
|
+
if (r.openStatus === "CLOSED_PERMANENTLY") permanentlyClosed++;
|
|
18649
|
+
if (r.openStatus === "CLOSED_TEMPORARILY") temporarilyClosed++;
|
|
18650
|
+
}
|
|
18651
|
+
return {
|
|
18652
|
+
locationCount: rows.length,
|
|
18653
|
+
withSecondaryCategories,
|
|
18654
|
+
secondaryCategoryTotal,
|
|
18655
|
+
withDescription,
|
|
18656
|
+
withServiceArea,
|
|
18657
|
+
withHours,
|
|
18658
|
+
withPrimaryPhone,
|
|
18659
|
+
permanentlyClosed,
|
|
18660
|
+
temporarilyClosed
|
|
18661
|
+
};
|
|
18662
|
+
}
|
|
18631
18663
|
function buildGbpSummary(input) {
|
|
18632
18664
|
const freshness = computeFreshness(input.dailyMetrics, input.asOfDate);
|
|
18633
18665
|
const anchor = freshness.dataThroughDate ?? input.asOfDate;
|
|
@@ -18644,7 +18676,8 @@ function buildGbpSummary(input) {
|
|
|
18644
18676
|
timeseries: buildTimeseries(input.dailyMetrics, freshness),
|
|
18645
18677
|
keywords: computeKeywordCoverage(input.keywords),
|
|
18646
18678
|
placeActions: summarizePlaceActions(input.placeActions),
|
|
18647
|
-
lodging: summarizeLodging(input.lodging)
|
|
18679
|
+
lodging: summarizeLodging(input.lodging),
|
|
18680
|
+
profileCompleteness: summarizeProfileCompleteness(input.locationProfiles)
|
|
18648
18681
|
};
|
|
18649
18682
|
}
|
|
18650
18683
|
|
|
@@ -21275,7 +21308,8 @@ async function googleRoutes(app, opts) {
|
|
|
21275
21308
|
dailyMetrics: [],
|
|
21276
21309
|
keywords: [],
|
|
21277
21310
|
placeActions: [],
|
|
21278
|
-
lodging: []
|
|
21311
|
+
lodging: [],
|
|
21312
|
+
locationProfiles: []
|
|
21279
21313
|
});
|
|
21280
21314
|
}
|
|
21281
21315
|
const metricRows = app.db.select().from(gbpDailyMetrics).where(and14(eq21(gbpDailyMetrics.projectId, project.id), inArray10(gbpDailyMetrics.locationName, locationNames))).all();
|
|
@@ -21288,6 +21322,14 @@ async function googleRoutes(app, opts) {
|
|
|
21288
21322
|
latestLodgingByLocation.set(row.locationName, { locationName: row.locationName, populatedGroupCount: row.populatedGroupCount });
|
|
21289
21323
|
}
|
|
21290
21324
|
}
|
|
21325
|
+
const profileRows = app.db.select({
|
|
21326
|
+
additionalCategories: gbpLocations.additionalCategories,
|
|
21327
|
+
description: gbpLocations.description,
|
|
21328
|
+
serviceArea: gbpLocations.serviceArea,
|
|
21329
|
+
regularHours: gbpLocations.regularHours,
|
|
21330
|
+
primaryPhone: gbpLocations.primaryPhone,
|
|
21331
|
+
openStatus: gbpLocations.openStatus
|
|
21332
|
+
}).from(gbpLocations).where(and14(eq21(gbpLocations.projectId, project.id), inArray10(gbpLocations.locationName, locationNames))).all();
|
|
21291
21333
|
return buildGbpSummary({
|
|
21292
21334
|
locationName,
|
|
21293
21335
|
locationCount: locationNames.length,
|
|
@@ -21295,7 +21337,8 @@ async function googleRoutes(app, opts) {
|
|
|
21295
21337
|
dailyMetrics: metricRows.map((r) => ({ metric: r.metric, date: r.date, value: r.value })),
|
|
21296
21338
|
keywords: keywordRows.map((r) => ({ valueCount: r.valueCount ?? null, valueThreshold: r.valueThreshold ?? null })),
|
|
21297
21339
|
placeActions: placeActionRows.map((r) => ({ placeActionType: r.placeActionType, providerType: r.providerType ?? null })),
|
|
21298
|
-
lodging: [...latestLodgingByLocation.values()]
|
|
21340
|
+
lodging: [...latestLodgingByLocation.values()],
|
|
21341
|
+
locationProfiles: profileRows
|
|
21299
21342
|
});
|
|
21300
21343
|
});
|
|
21301
21344
|
}
|
|
@@ -34434,7 +34477,10 @@ var IntelligenceService = class {
|
|
|
34434
34477
|
keywords: [],
|
|
34435
34478
|
// keyword coverage is unused here; the trend uses the monthly series below
|
|
34436
34479
|
placeActions: placeActionRows.map((r) => ({ placeActionType: r.placeActionType, providerType: r.providerType ?? null })),
|
|
34437
|
-
lodging: lodgingRow ? [{ locationName, populatedGroupCount: lodgingRow.populatedGroupCount }] : []
|
|
34480
|
+
lodging: lodgingRow ? [{ locationName, populatedGroupCount: lodgingRow.populatedGroupCount }] : [],
|
|
34481
|
+
// The analyzer consumes metric/keyword/place-action/lodging signals, not
|
|
34482
|
+
// the profile-completeness scorecard, so it is left empty here.
|
|
34483
|
+
locationProfiles: []
|
|
34438
34484
|
});
|
|
34439
34485
|
const trend = this.buildGbpKeywordTrend(projectId, locationName);
|
|
34440
34486
|
return {
|
|
@@ -1069,6 +1069,19 @@ var gbpSummaryDtoSchema = z8.object({
|
|
|
1069
1069
|
lodgingLocationCount: z8.number().int().nonnegative(),
|
|
1070
1070
|
populatedLodgingCount: z8.number().int().nonnegative(),
|
|
1071
1071
|
emptyLodgingCount: z8.number().int().nonnegative()
|
|
1072
|
+
}),
|
|
1073
|
+
// Owner-content completeness over the in-scope locations: how many populate
|
|
1074
|
+
// each entity-anchor / qualifier field AI answer engines weight.
|
|
1075
|
+
profileCompleteness: z8.object({
|
|
1076
|
+
locationCount: z8.number().int().nonnegative(),
|
|
1077
|
+
withSecondaryCategories: z8.number().int().nonnegative(),
|
|
1078
|
+
secondaryCategoryTotal: z8.number().int().nonnegative(),
|
|
1079
|
+
withDescription: z8.number().int().nonnegative(),
|
|
1080
|
+
withServiceArea: z8.number().int().nonnegative(),
|
|
1081
|
+
withHours: z8.number().int().nonnegative(),
|
|
1082
|
+
withPrimaryPhone: z8.number().int().nonnegative(),
|
|
1083
|
+
permanentlyClosed: z8.number().int().nonnegative(),
|
|
1084
|
+
temporarilyClosed: z8.number().int().nonnegative()
|
|
1072
1085
|
})
|
|
1073
1086
|
});
|
|
1074
1087
|
var GBP_METRIC_LABELS = {
|
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-2SO5ZS4S.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-6RVUSM4Y.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-AFSVCKFI.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-WMBOHP7E.js";
|
|
81
81
|
|
|
82
82
|
// src/cli.ts
|
|
83
83
|
import { pathToFileURL } from "url";
|
|
@@ -3566,6 +3566,8 @@ async function gbpSummary(project, opts) {
|
|
|
3566
3566
|
Keywords: ${s.keywords.total} tracked, ${s.keywords.thresholdedPct}% privacy-thresholded`);
|
|
3567
3567
|
console.log(`Place actions: ${s.placeActions.total} CTA(s) \u2014 reservation:${s.placeActions.hasReservationCta ? "yes" : "no"} booking:${s.placeActions.hasBookingCta ? "yes" : "no"} direct-merchant:${s.placeActions.hasDirectMerchantCta ? "yes" : "no"}`);
|
|
3568
3568
|
console.log(`Lodging: ${s.lodging.lodgingLocationCount} profile(s), ${s.lodging.populatedLodgingCount} populated, ${s.lodging.emptyLodgingCount} empty`);
|
|
3569
|
+
const pc = s.profileCompleteness;
|
|
3570
|
+
console.log(`Profile completeness (${pc.locationCount} location(s)): ${pc.withSecondaryCategories} w/ secondary categories (${pc.secondaryCategoryTotal} total), ${pc.withDescription} w/ description, ${pc.withServiceArea} w/ service area, ${pc.withHours} w/ hours, ${pc.withPrimaryPhone} w/ phone` + (pc.permanentlyClosed || pc.temporarilyClosed ? `; closed: ${pc.permanentlyClosed} permanently, ${pc.temporarilyClosed} temporarily` : ""));
|
|
3569
3571
|
}
|
|
3570
3572
|
|
|
3571
3573
|
// src/cli-commands/gbp.ts
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2SO5ZS4S.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-6RVUSM4Y.js";
|
|
7
|
+
import "./chunk-AFSVCKFI.js";
|
|
8
|
+
import "./chunk-WMBOHP7E.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-6RVUSM4Y.js";
|
|
7
7
|
import {
|
|
8
8
|
isReadOnlyKey
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WMBOHP7E.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.91.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",
|
|
@@ -62,27 +62,27 @@
|
|
|
62
62
|
"@types/node-cron": "^3.0.11",
|
|
63
63
|
"tsup": "^8.5.1",
|
|
64
64
|
"tsx": "^4.19.0",
|
|
65
|
-
"@ainyc/canonry-api-client": "0.0.0",
|
|
66
65
|
"@ainyc/canonry-api-routes": "0.0.0",
|
|
67
|
-
"@ainyc/canonry-
|
|
66
|
+
"@ainyc/canonry-api-client": "0.0.0",
|
|
67
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
68
68
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
69
69
|
"@ainyc/canonry-db": "0.0.0",
|
|
70
|
+
"@ainyc/canonry-config": "0.0.0",
|
|
70
71
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
71
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
72
72
|
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
73
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
73
74
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
74
75
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
75
|
-
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
76
|
-
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
77
76
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
78
|
-
"@ainyc/canonry-integration-
|
|
77
|
+
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
79
78
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
80
79
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
81
80
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
82
81
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
83
|
-
"@ainyc/canonry-provider-local": "0.0.0",
|
|
84
82
|
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
85
|
-
"@ainyc/canonry-provider-
|
|
83
|
+
"@ainyc/canonry-provider-local": "0.0.0",
|
|
84
|
+
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
85
|
+
"@ainyc/canonry-integration-wordpress": "0.0.0"
|
|
86
86
|
},
|
|
87
87
|
"scripts": {
|
|
88
88
|
"build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",
|