@canonry/canonry 7.17.2 → 7.18.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/portfolio-analysis.md +8 -6
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
- package/assets/assets/{AuditHistoryPanel-Dga03Niw.js → AuditHistoryPanel-CgKpjgpq.js} +1 -1
- package/assets/assets/{BacklinksPage-CfodWuIt.js → BacklinksPage-BBqbRSeG.js} +1 -1
- package/assets/assets/{HistoryPage-BN_vTU5L.js → HistoryPage-D8nQ8E8_.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-CjiyzOmE.js → MeasurementPropertyPage-CQ8lLoeA.js} +1 -1
- package/assets/assets/{ProjectPage-AxclA3YC.js → ProjectPage-CP4fvluh.js} +1 -1
- package/assets/assets/{RunsPage-Ca_ziCGC.js → RunsPage-D0qkTwas.js} +1 -1
- package/assets/assets/{SettingsPage-SO1xl0d3.js → SettingsPage-DaqR1wKC.js} +1 -1
- package/assets/assets/{SiteHealthSection-C9JgRzzs.js → SiteHealthSection-dGXxZ8IR.js} +3 -3
- package/assets/assets/{TrafficPage-DrcbXNQB.js → TrafficPage-DodOmnVv.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-HDZGKgyd.js → TrafficSourceDetailPage-C7b-BcKF.js} +1 -1
- package/assets/assets/{extract-error-message-D48vwe7I.js → extract-error-message-BYvzTsML.js} +1 -1
- package/assets/assets/{index-BaBHBReI.js → index-BVzozur0.js} +21 -21
- package/assets/assets/{react-sigma_core.esm.min-DVHs4npB.js → react-sigma_core.esm.min-DXcq1O0r.js} +1 -1
- package/assets/assets/{v2-overview-adapter-CTEXuiRt.js → v2-overview-adapter-1MHnrdnr.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-3LPQ4JV5.js → chunk-5M2RY5WU.js} +8 -7
- package/dist/{chunk-YJS4OE6I.js → chunk-COQOQYRZ.js} +136 -37
- package/dist/{chunk-QAIJH74T.js → chunk-EAAM47H6.js} +24 -9
- package/dist/{chunk-P2XY5YX7.js → chunk-JMC7CEJB.js} +4 -4
- package/dist/{chunk-4EDH2ORA.js → chunk-JUOFNJLV.js} +3 -3
- package/dist/{chunk-NPNU6UHD.js → chunk-U7D7LNVJ.js} +2 -2
- package/dist/{chunk-MIRAKDRW.js → chunk-X2S7D3MN.js} +17 -3
- package/dist/cli.js +26 -16
- package/dist/{demo-server-54SLPSJF.js → demo-server-XWRIXME5.js} +4 -4
- package/dist/index.js +6 -6
- package/dist/{intelligence-service-62CEP6M2.js → intelligence-service-332S7D7Y.js} +2 -2
- package/dist/mcp.js +4 -4
- package/package.json +11 -11
|
@@ -3720,8 +3720,9 @@ var measurementCountMetricValueSchema = z6.discriminatedUnion("state", [
|
|
|
3720
3720
|
reason: measurementMetricUnavailableReasonSchema
|
|
3721
3721
|
}).strict()
|
|
3722
3722
|
]);
|
|
3723
|
-
var measurementOverviewScopeKindSchema = z6.enum(["all", "group", "property"]);
|
|
3723
|
+
var measurementOverviewScopeKindSchema = z6.enum(["all", "group", "market", "property"]);
|
|
3724
3724
|
var measurementQueryClassFilterSchema = queryClassFilterSchema;
|
|
3725
|
+
var MEASUREMENT_DEFAULT_QUERY_CLASS = "non-brand";
|
|
3725
3726
|
var measurementOverviewSortSchema = z6.enum([
|
|
3726
3727
|
"label-asc",
|
|
3727
3728
|
"label-desc",
|
|
@@ -3742,7 +3743,10 @@ var measurementNextActionKindSchema = z6.enum([
|
|
|
3742
3743
|
var measurementOverviewQuerySchema = z6.object({
|
|
3743
3744
|
scope: measurementOverviewScopeKindSchema,
|
|
3744
3745
|
groupKey: measurementV2StableKeySchema.optional(),
|
|
3746
|
+
/** Required for market scope: a frozen reporting scope's stable key. */
|
|
3747
|
+
marketKey: measurementV2StableKeySchema.optional(),
|
|
3745
3748
|
targetKey: measurementV2StableKeySchema.optional(),
|
|
3749
|
+
/** Omit for non-brand. `all` pools branded and non-brand into one rate. */
|
|
3746
3750
|
queryClass: measurementQueryClassFilterSchema.optional(),
|
|
3747
3751
|
provider: providerNameSchema.optional(),
|
|
3748
3752
|
location: z6.string().trim().min(1).optional(),
|
|
@@ -11454,6 +11458,13 @@ var measurementReportRunSchema = z26.object({
|
|
|
11454
11458
|
}).strict();
|
|
11455
11459
|
var measurementReportResponseSchema = z26.object({
|
|
11456
11460
|
revision: z26.number().int().positive(),
|
|
11461
|
+
/**
|
|
11462
|
+
* The query class every group, Target and evidence row below is taken over:
|
|
11463
|
+
* non-brand unless the request named another, and `all` pools branded with
|
|
11464
|
+
* non-brand. Null for a schema v1 revision, which records no class. Absent on
|
|
11465
|
+
* servers that predate it.
|
|
11466
|
+
*/
|
|
11467
|
+
queryClass: measurementQueryClassFilterSchema.nullable().optional(),
|
|
11457
11468
|
run: measurementReportRunSchema.nullable(),
|
|
11458
11469
|
groups: z26.array(measurementGroupReportSchema),
|
|
11459
11470
|
targets: z26.array(measurementTargetReportSchema),
|
|
@@ -12047,12 +12058,14 @@ var measurementPropertyCompetitorsResponseSchema = z28.object({
|
|
|
12047
12058
|
var measurementChangesSortSchema = z28.enum(["magnitude", "label"]);
|
|
12048
12059
|
var MEASUREMENT_CHANGES_DEFAULT_SORT = "magnitude";
|
|
12049
12060
|
var MEASUREMENT_CHANGES_NOISE_ANSWERS = 2;
|
|
12061
|
+
var measurementChangesScopeKindSchema = z28.enum(["all", "group", "property"]);
|
|
12050
12062
|
var measurementChangesQuerySchema = z28.object({
|
|
12051
12063
|
runId: measurementDemoFilterQueryShape.runId,
|
|
12052
|
-
scope:
|
|
12064
|
+
scope: measurementChangesScopeKindSchema.default("all"),
|
|
12053
12065
|
groupKey: measurementV2StableKeySchema.optional(),
|
|
12054
12066
|
targetKey: measurementV2StableKeySchema.optional(),
|
|
12055
|
-
|
|
12067
|
+
/** Defaults to non-brand. `all` pools both classes and adds `metricsByClass`. */
|
|
12068
|
+
queryClass: measurementQueryClassFilterSchema.default(MEASUREMENT_DEFAULT_QUERY_CLASS),
|
|
12056
12069
|
provider: measurementDemoFilterQueryShape.provider,
|
|
12057
12070
|
location: measurementDemoFilterQueryShape.location,
|
|
12058
12071
|
limit: z28.number().int().positive().max(50).optional(),
|
|
@@ -22670,6 +22683,7 @@ export {
|
|
|
22670
22683
|
MEASUREMENT_PAGE_DEFAULT_LIMIT,
|
|
22671
22684
|
MEASUREMENT_PAGE_MAX_LIMIT,
|
|
22672
22685
|
measurementQueryClassFilterSchema,
|
|
22686
|
+
MEASUREMENT_DEFAULT_QUERY_CLASS,
|
|
22673
22687
|
measurementOverviewSortSchema,
|
|
22674
22688
|
MEASUREMENT_OVERVIEW_DEFAULT_SORT,
|
|
22675
22689
|
measurementOverviewQuerySchema,
|
package/dist/cli.js
CHANGED
|
@@ -34,11 +34,11 @@ import {
|
|
|
34
34
|
trackCliCommandFinished,
|
|
35
35
|
trackEvent,
|
|
36
36
|
waitForServerRuntimeStartup
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-5M2RY5WU.js";
|
|
38
38
|
import {
|
|
39
39
|
autoSyncSkills,
|
|
40
40
|
formatAutoSyncNotice
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-JUOFNJLV.js";
|
|
42
42
|
import {
|
|
43
43
|
configExists,
|
|
44
44
|
createApiClient,
|
|
@@ -55,13 +55,13 @@ import {
|
|
|
55
55
|
saveConfig,
|
|
56
56
|
saveConfigPatch,
|
|
57
57
|
shouldPrintServeSkillsNudge
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-JMC7CEJB.js";
|
|
59
59
|
import {
|
|
60
60
|
DEFAULT_DEMO_TRUSTED_PROXIES,
|
|
61
61
|
trustedProxiesProblem,
|
|
62
62
|
trustedProxyProblem
|
|
63
63
|
} from "./chunk-RB2F4D3Z.js";
|
|
64
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-U7D7LNVJ.js";
|
|
65
65
|
import {
|
|
66
66
|
CliError,
|
|
67
67
|
EXIT_SYSTEM_ERROR,
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
runMeasurementDraftAction,
|
|
74
74
|
systemError,
|
|
75
75
|
usageError
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-EAAM47H6.js";
|
|
77
77
|
import {
|
|
78
78
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
79
79
|
CLOUDFLARE_WORKER_GENERATED_MARKER,
|
|
@@ -105,7 +105,7 @@ import {
|
|
|
105
105
|
rawEventSamples,
|
|
106
106
|
readMarketCompetitorNames,
|
|
107
107
|
runs
|
|
108
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-COQOQYRZ.js";
|
|
109
109
|
import {
|
|
110
110
|
AdsDeliverySnapshotStatuses,
|
|
111
111
|
AdsHistoricalCampaignRollupStatuses,
|
|
@@ -238,7 +238,7 @@ import {
|
|
|
238
238
|
visibilityCompareSelectionSchema,
|
|
239
239
|
visibilityReportRequestSchema,
|
|
240
240
|
winnabilityClassSchema
|
|
241
|
-
} from "./chunk-
|
|
241
|
+
} from "./chunk-X2S7D3MN.js";
|
|
242
242
|
|
|
243
243
|
// src/cli.ts
|
|
244
244
|
import { pathToFileURL } from "url";
|
|
@@ -788,7 +788,7 @@ function parseDemoTrustedProxies(values) {
|
|
|
788
788
|
async function demoCommand(options) {
|
|
789
789
|
const { host, port } = parseDemoListenOptions(options);
|
|
790
790
|
const trustProxy = parseDemoTrustedProxies(options.trustProxy);
|
|
791
|
-
const { createDemoServer } = await import("./demo-server-
|
|
791
|
+
const { createDemoServer } = await import("./demo-server-XWRIXME5.js");
|
|
792
792
|
const app = await createDemoServer({ trustProxy });
|
|
793
793
|
let stopping = false;
|
|
794
794
|
const stop = () => {
|
|
@@ -1202,7 +1202,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
|
|
|
1202
1202
|
}
|
|
1203
1203
|
}
|
|
1204
1204
|
async function backfillInsightsCommand(project2, opts) {
|
|
1205
|
-
const { IntelligenceService } = await import("./intelligence-service-
|
|
1205
|
+
const { IntelligenceService } = await import("./intelligence-service-332S7D7Y.js");
|
|
1206
1206
|
const config = loadConfig();
|
|
1207
1207
|
const db = createClient(config.database);
|
|
1208
1208
|
migrate(db);
|
|
@@ -12247,8 +12247,18 @@ async function discoverMeasurementTargets(project2, sitemapUrl, ruleSource, maxU
|
|
|
12247
12247
|
});
|
|
12248
12248
|
console.log(JSON.stringify(await createApiClient().discoverMeasurementTargets(project2, request), null, 2));
|
|
12249
12249
|
}
|
|
12250
|
-
async function showMeasurementReport(project2, revision) {
|
|
12251
|
-
console.log(JSON.stringify(await createApiClient().getMeasurementReport(project2, revision), null, 2));
|
|
12250
|
+
async function showMeasurementReport(project2, revision, queryClass) {
|
|
12251
|
+
console.log(JSON.stringify(await createApiClient().getMeasurementReport(project2, revision, void 0, queryClass), null, 2));
|
|
12252
|
+
}
|
|
12253
|
+
function queryClassText(queryClass) {
|
|
12254
|
+
switch (queryClass) {
|
|
12255
|
+
case "non-brand":
|
|
12256
|
+
return "non-brand queries";
|
|
12257
|
+
case "branded":
|
|
12258
|
+
return "branded queries";
|
|
12259
|
+
case "all":
|
|
12260
|
+
return "branded and non-brand queries pooled";
|
|
12261
|
+
}
|
|
12252
12262
|
}
|
|
12253
12263
|
var METRIC_REASONS = {
|
|
12254
12264
|
plan_v1: "not measured (setup update required)",
|
|
@@ -12290,7 +12300,7 @@ async function showMeasurementProperty(project2, opts) {
|
|
|
12290
12300
|
function printMeasurementProperty(response) {
|
|
12291
12301
|
const row = response.properties.items.at(0);
|
|
12292
12302
|
const lines = [];
|
|
12293
|
-
lines.push(`${response.scope.label} \
|
|
12303
|
+
lines.push(`${response.scope.label} \xB7 ${queryClassText(response.queryClass)}`);
|
|
12294
12304
|
lines.push(`Measurement: ${response.measurement.state}${response.measurement.displayedRunId ? ` \xB7 run ${response.measurement.displayedRunId}` : ""}`);
|
|
12295
12305
|
lines.push("");
|
|
12296
12306
|
const mention = row ? row.mentionCoverage : response.metrics.mentionCoverage;
|
|
@@ -21945,8 +21955,8 @@ Usage: ${usage}`);
|
|
|
21945
21955
|
},
|
|
21946
21956
|
{
|
|
21947
21957
|
path: ["measurement-plan", "report"],
|
|
21948
|
-
usage: "canonry measurement-plan report <project> --revision N [--format json]",
|
|
21949
|
-
options: { revision: stringOption() },
|
|
21958
|
+
usage: "canonry measurement-plan report <project> --revision N [--query-class non-brand|branded|all] [--format json] (schema v2 revision: default non-brand, all pools both classes; schema v1 revision: reads every answer, refuses non-brand and branded)",
|
|
21959
|
+
options: { revision: stringOption(), "query-class": stringOption() },
|
|
21950
21960
|
run: (input) => {
|
|
21951
21961
|
const project2 = requireProject(input, "measurement-plan.report", "canonry measurement-plan report <project> --revision N");
|
|
21952
21962
|
const value = getString(input.values, "revision");
|
|
@@ -21954,12 +21964,12 @@ Usage: ${usage}`);
|
|
|
21954
21964
|
if (revision === void 0 || !Number.isInteger(revision) || revision <= 0) {
|
|
21955
21965
|
throw usageError("--revision must be a positive integer");
|
|
21956
21966
|
}
|
|
21957
|
-
return showMeasurementReport(project2, revision);
|
|
21967
|
+
return showMeasurementReport(project2, revision, queryClassOption(input));
|
|
21958
21968
|
}
|
|
21959
21969
|
},
|
|
21960
21970
|
{
|
|
21961
21971
|
path: ["measurement-plan", "property"],
|
|
21962
|
-
usage: "canonry measurement-plan property <project> --target-key <key> [--query-class
|
|
21972
|
+
usage: "canonry measurement-plan property <project> --target-key <key> [--query-class non-brand|branded|all] [--provider <p>] [--location <l>] [--run-id <id>] [--format json] (default non-brand; all pools both classes)",
|
|
21963
21973
|
options: PROPERTY_SCOPE_OPTIONS,
|
|
21964
21974
|
run: (input) => {
|
|
21965
21975
|
const usage = "canonry measurement-plan property <project> --target-key <key>";
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
computeFactorAverages,
|
|
6
6
|
layoutSiteCrawlGraphInput,
|
|
7
7
|
persistSiteCrawlGraphLayout
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-U7D7LNVJ.js";
|
|
9
9
|
import {
|
|
10
10
|
PACKAGE_VERSION,
|
|
11
11
|
canonryMcpTools
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-EAAM47H6.js";
|
|
13
13
|
import {
|
|
14
14
|
HISTORY_WINDOW_RUNS,
|
|
15
15
|
IntelligenceService,
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
siteCrawlPages,
|
|
86
86
|
siteCrawlSnapshots,
|
|
87
87
|
trafficSources
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-COQOQYRZ.js";
|
|
89
89
|
import {
|
|
90
90
|
RunKinds,
|
|
91
91
|
SiteCrawlFetchStates,
|
|
@@ -115,7 +115,7 @@ import {
|
|
|
115
115
|
roundPreservingTotal,
|
|
116
116
|
siteAuditPageFactorSchema,
|
|
117
117
|
wilsonInterval
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-X2S7D3MN.js";
|
|
119
119
|
|
|
120
120
|
// src/demo-server.ts
|
|
121
121
|
import { dirname, join as join2 } from "path";
|
package/dist/index.js
CHANGED
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
createGoogleMarketingCredentialStore,
|
|
4
4
|
createGoogleMarketingRuntime,
|
|
5
5
|
createServer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5M2RY5WU.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-JMC7CEJB.js";
|
|
10
|
+
import "./chunk-U7D7LNVJ.js";
|
|
11
|
+
import "./chunk-EAAM47H6.js";
|
|
12
|
+
import "./chunk-COQOQYRZ.js";
|
|
13
|
+
import "./chunk-X2S7D3MN.js";
|
|
14
14
|
export {
|
|
15
15
|
GoogleMarketingRuntimeError,
|
|
16
16
|
createGoogleMarketingCredentialStore,
|
package/dist/mcp.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
autoSyncSkills
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JUOFNJLV.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient,
|
|
6
6
|
createCanonryMcpServer
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-JMC7CEJB.js";
|
|
8
|
+
import "./chunk-EAAM47H6.js";
|
|
9
9
|
import {
|
|
10
10
|
isReadOnlyKey,
|
|
11
11
|
updateCheckEnvOptOut
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-X2S7D3MN.js";
|
|
13
13
|
|
|
14
14
|
// src/mcp/cli.ts
|
|
15
15
|
import { randomUUID } from "crypto";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonry/canonry",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.18.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Self-hosted AI visibility (AEO) platform: track how ChatGPT, Claude, Gemini, and Perplexity cite your domain, join it with Search Console, GA4, server-side traffic, and paid media, and fix what you find through agent tools (CLI, REST, MCP). Local SQLite.",
|
|
6
6
|
"keywords": [
|
|
@@ -85,32 +85,32 @@
|
|
|
85
85
|
"@types/node-cron": "^3.0.11",
|
|
86
86
|
"tsup": "^8.5.1",
|
|
87
87
|
"tsx": "^4.19.0",
|
|
88
|
+
"@ainyc/canonry-web": "0.0.0",
|
|
89
|
+
"@ainyc/canonry-api-client": "0.0.0",
|
|
88
90
|
"@ainyc/canonry-api-routes": "0.0.0",
|
|
89
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
90
91
|
"@ainyc/canonry-config": "0.0.0",
|
|
91
92
|
"@ainyc/canonry-db": "0.0.0",
|
|
92
|
-
"@ainyc/canonry-
|
|
93
|
-
"@ainyc/canonry-api-client": "0.0.0",
|
|
94
|
-
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
93
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
95
94
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
96
95
|
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
97
96
|
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
97
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
98
98
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
99
|
-
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
100
99
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
100
|
+
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
101
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
101
102
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
102
103
|
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
103
|
-
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
104
|
-
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
105
104
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
105
|
+
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
106
106
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
107
|
-
"@ainyc/canonry-intelligence": "0.0.0",
|
|
108
107
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
109
|
-
"@ainyc/canonry-provider-local": "0.0.0",
|
|
110
108
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
109
|
+
"@ainyc/canonry-intelligence": "0.0.0",
|
|
110
|
+
"@ainyc/canonry-provider-local": "0.0.0",
|
|
111
|
+
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
111
112
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
112
113
|
"@ainyc/canonry-provider-muse": "0.0.0",
|
|
113
|
-
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
114
114
|
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
115
115
|
"@ainyc/canonry-integration-typesafe": "0.0.0"
|
|
116
116
|
},
|