@canonry/canonry 7.58.3 → 7.58.5

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 (35) hide show
  1. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +21 -13
  2. package/assets/assets/{AgentSetupPage-CRvCLiCD.js → AgentSetupPage-CoD9a386.js} +1 -1
  3. package/assets/assets/{MeasurementPropertyPage-B3qnQtNg.js → MeasurementPropertyPage-BZmvjMiS.js} +1 -1
  4. package/assets/assets/{ProjectPage-j9V9UFfY.js → ProjectPage-DMIoYBCF.js} +2 -2
  5. package/assets/assets/{RunsPage-CvqCrsiH.js → RunsPage-DtvesLu2.js} +1 -1
  6. package/assets/assets/{SettingsPage-CX5Rzsm3.js → SettingsPage-BjE3d5Ae.js} +1 -1
  7. package/assets/assets/{SiteHealthSection-CYKyJBaJ.js → SiteHealthSection-D6RLbM2o.js} +2 -2
  8. package/assets/assets/{TrafficPage-DNC0DP-U.js → TrafficPage-CHZlfMgd.js} +1 -1
  9. package/assets/assets/{index-CQwjYVPD.js → index-CgAMnZFS.js} +5 -5
  10. package/assets/assets/index-DElT2Fss.css +1 -0
  11. package/assets/assets/{react-sigma_core.esm.min-BNkIcXRz.js → react-sigma_core.esm.min-TGwpCHs4.js} +1 -1
  12. package/assets/assets/{service-CWdIU_mf.js → service-CUJkePNp.js} +1 -1
  13. package/assets/index.html +2 -2
  14. package/dist/{backfill-JAHDHVXJ.js → backfill-SINDWLD3.js} +2 -2
  15. package/dist/{chunk-2DZYA62C.js → chunk-5D4RL23M.js} +1 -1
  16. package/dist/{chunk-NMLVLFF7.js → chunk-65YQFVJM.js} +1 -1
  17. package/dist/{chunk-QFO7JHX2.js → chunk-A5F5E4DL.js} +1 -1
  18. package/dist/{chunk-BDUHO7KK.js → chunk-AP7YSOFC.js} +14 -14
  19. package/dist/{chunk-SXGLLWS4.js → chunk-CYVQW32W.js} +7 -5
  20. package/dist/{chunk-JDRKZOUP.js → chunk-NWYNTYPD.js} +1 -1
  21. package/dist/{chunk-RXMGU7AF.js → chunk-O6TF6TPM.js} +2 -2
  22. package/dist/{chunk-NWQQYLZV.js → chunk-QEJBAPDP.js} +195 -100
  23. package/dist/{cli-commands-3HTHHRXT.js → cli-commands-ZPW3OST3.js} +1 -1
  24. package/dist/cli.js +2 -2
  25. package/dist/{dashboard-2P3TEH6S.js → dashboard-VT3GQRW4.js} +1 -1
  26. package/dist/{demo-TPOKI7ZM.js → demo-ZBNVULOO.js} +1 -1
  27. package/dist/{demo-server-ZBNKYYM2.js → demo-server-QUW4TDJL.js} +153 -7
  28. package/dist/index.js +5 -5
  29. package/dist/{init-4IKMMWAD.js → init-C2DLDK6T.js} +1 -1
  30. package/dist/{intelligence-service-4PHEK5F4.js → intelligence-service-R5BRSQKI.js} +2 -2
  31. package/dist/{serve-2AOLGG3F.js → serve-ME2KJ6BG.js} +6 -6
  32. package/dist/{session-VTFLD3C5.js → session-R3PRJ3RB.js} +3 -3
  33. package/dist/{tools-LRHO7QOT.js → tools-VZVQ2CTU.js} +2 -2
  34. package/package.json +1 -1
  35. package/assets/assets/index-B662I7kR.css +0 -1
@@ -18,14 +18,14 @@ import "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  HISTORY_WINDOW_RUNS,
20
20
  IntelligenceService
21
- } from "./chunk-NMLVLFF7.js";
21
+ } from "./chunk-65YQFVJM.js";
22
22
  import {
23
23
  determineCitationState
24
24
  } from "./chunk-L7TKNHEX.js";
25
25
  import {
26
26
  apiRoutes,
27
27
  assessConversionTrackingIntegrity
28
- } from "./chunk-NWQQYLZV.js";
28
+ } from "./chunk-QEJBAPDP.js";
29
29
  import "./chunk-Q4J3XSWE.js";
30
30
  import "./chunk-27SGL3DF.js";
31
31
  import {
@@ -91,6 +91,9 @@ import {
91
91
  researchRunQueries,
92
92
  researchRuns,
93
93
  runs,
94
+ seoJobs,
95
+ seoProfiles,
96
+ seoTasks,
94
97
  simpleMeasurementDefinitions,
95
98
  siteAuditPages,
96
99
  siteAuditSnapshots,
@@ -109,6 +112,12 @@ import {
109
112
  RunKinds,
110
113
  RunStatuses,
111
114
  RunTriggers,
115
+ SeoAdapterOutcomes,
116
+ SeoCapabilities,
117
+ SeoProviders,
118
+ SeoRunStatuses,
119
+ SeoScopeKinds,
120
+ SeoTargetKinds,
112
121
  SiteCrawlFetchStates,
113
122
  SiteCrawlIndexabilityReasons,
114
123
  SiteCrawlIndexabilityStates,
@@ -126,6 +135,7 @@ import {
126
135
  determineAnswerMentioned,
127
136
  effectiveBrandNames,
128
137
  effectiveDomains,
138
+ emptySeoResults,
129
139
  extractRecommendedCompetitors,
130
140
  factorStatusFromScore,
131
141
  formatPercent,
@@ -1267,6 +1277,17 @@ var DEMO_READ_ROUTES = /* @__PURE__ */ new Set([
1267
1277
  "/api/v1/projects/:name/schedule",
1268
1278
  "/api/v1/projects/:name/schedules",
1269
1279
  "/api/v1/projects/:name/search",
1280
+ // Stored SEO evidence only. Refresh intents, sync, cancellation, and operator reads stay closed.
1281
+ "/api/v1/projects/:name/seo/context",
1282
+ "/api/v1/projects/:name/seo/status",
1283
+ "/api/v1/projects/:name/seo/profiles",
1284
+ "/api/v1/projects/:name/seo/profiles/:id",
1285
+ "/api/v1/projects/:name/seo/overview",
1286
+ "/api/v1/projects/:name/seo/keyword-metrics",
1287
+ "/api/v1/projects/:name/seo/domain-intelligence",
1288
+ "/api/v1/projects/:name/seo/ranked-keywords",
1289
+ "/api/v1/projects/:name/seo/runs",
1290
+ "/api/v1/projects/:name/seo/runs/:id",
1270
1291
  "/api/v1/projects/:name/snapshots",
1271
1292
  "/api/v1/projects/:name/snapshots/diff",
1272
1293
  "/api/v1/projects/:name/technical-aeo",
@@ -1309,7 +1330,7 @@ var DEMO_CLIENT_CONFIG = {
1309
1330
  dashboard: { showAgentBar: false, showUpdateNotification: false }
1310
1331
  };
1311
1332
  var INLINE_SCRIPT = /<script(?<attributes>[^>]*)>(?<body>[\s\S]*?)<\/script>/gi;
1312
- var DEMO_DOCUMENT_PATH = /^\/(?:projects(?:\/[^/.]+(?:\/(?:portfolio|discovery|search-console|activity|technical-aeo|conversions|local|queries|backlinks|report|history|settings|properties)(?:\/[^/.]+)*)?)?|runs|history|traffic(?:\/[^/.]+(?:\/[^/.]+)?)?)\/?$/;
1333
+ var DEMO_DOCUMENT_PATH = /^\/(?:projects(?:\/[^/.]+(?:\/(?:portfolio|discovery|search-console|seo-data|activity|technical-aeo|conversions|local|queries|backlinks|report|history|settings|properties)(?:\/[^/.]+)*)?)?|runs|history|traffic(?:\/[^/.]+(?:\/[^/.]+)?)?)\/?$/;
1313
1334
  var DEMO_TITLE = "Canonry live demo";
1314
1335
  var DEMO_DESCRIPTION = "The open-source AEO operating platform. Sample data, no sign-in.";
1315
1336
  var DEMO_PREVIEW_IMAGE = "demo-og.png";
@@ -3176,8 +3197,132 @@ function seedLocalAndCommercialSignals(db, input) {
3176
3197
  db.insert(conversionTrackingContracts).values({ id: `${prefix}-conversion`, projectId: project.id, name: "Sample lead", eventName: "generate_lead", googleAds: { customerId: "demo-customer", conversionActionId: "demo-action", conversionId: "AW-123456", conversionLabel: "demo-label", campaignIds: [campaignId], requireBiddableGoal: true, requirePrimaryAction: true }, gtm: { accountId: "demo-account", containerId: "demo-container", tagId: "demo-tag", triggerIds: ["demo-trigger"], variableIds: ["demo-value", "demo-currency"] }, runtime: { verificationRequired: true, requireTransactionId: true, requireValue: true, requireCurrency: true, productionHosts: [project.domain] }, createdAt: nowIso, updatedAt: nowIso }).run();
3177
3198
  }
3178
3199
 
3200
+ // src/demo/seed-seo.ts
3201
+ import { eq as eq5 } from "drizzle-orm";
3202
+ function seedDemoSeo(db, context) {
3203
+ db.transaction((tx) => {
3204
+ for (const project of [context.simple, context.portfolio]) {
3205
+ const version = tx.select({ version: measurementPlanVersions }).from(measurementPlans).innerJoin(measurementPlanVersions, eq5(measurementPlans.activeVersionId, measurementPlanVersions.id)).where(eq5(measurementPlans.projectId, project.id)).get()?.version;
3206
+ const plan = version ? measurementPlanV2Schema.parse(JSON.parse(version.canonicalJson)) : null;
3207
+ const properties = harborProperties();
3208
+ const keywords = plan ? properties.map((property) => `luxury resorts in ${property.market.label.toLowerCase()} with ${["oceanfront pools", "family suites", "spa packages", "waterfront dining"][property.number - 1]}`) : ["roof repair near me", "roof replacement cost", "metal roofing contractors", "emergency roof repair", "shingle roof installation", "storm damage roof repair", "roof inspection", "flat roof repair"];
3209
+ const base = {
3210
+ name: "Whole site",
3211
+ connectionId: "demo-seo",
3212
+ capabilities: [SeoCapabilities["keyword-metrics"], SeoCapabilities["domain-intelligence"], SeoCapabilities["ranked-keywords"]],
3213
+ targets: [{ kind: SeoTargetKinds.domain, value: project.domain, includeSubdomains: true }],
3214
+ keywords,
3215
+ locationCode: 2840,
3216
+ languageCode: "en",
3217
+ limit: 100,
3218
+ scope: { kind: SeoScopeKinds.project, ...version ? { expectedPlanRevision: version.revision } : {} }
3219
+ };
3220
+ const profiles = [{ id: "all-site", input: base }];
3221
+ if (plan && version) {
3222
+ for (const scope of [
3223
+ ...plan.groups.map((group) => ({ kind: SeoScopeKinds.group, key: group.stableKey, label: group.label, targetKeys: group.targetKeys })),
3224
+ ...(plan.reportingScopes ?? []).map((market) => ({ kind: SeoScopeKinds.market, key: market.stableKey, label: market.label, targetKeys: market.usageEdges.map((edge) => edge.targetKey) })),
3225
+ ...plan.targets.map((target) => ({ kind: SeoScopeKinds.property, key: target.stableKey, label: target.label, targetKeys: [target.stableKey] }))
3226
+ ]) {
3227
+ profiles.push({ id: `${scope.kind}-${scope.key}`, input: {
3228
+ ...base,
3229
+ name: `${scope.label} \xB7 ${scope.kind}`,
3230
+ targets: [],
3231
+ capabilities: [SeoCapabilities["keyword-metrics"]],
3232
+ keywords: properties.flatMap((property, index) => scope.targetKeys.includes(property.key) ? [keywords[index]] : []),
3233
+ scope: { kind: scope.kind, key: scope.key, expectedPlanRevision: version.revision }
3234
+ } });
3235
+ }
3236
+ }
3237
+ for (const { id: profileId, input } of profiles) {
3238
+ const createdAt = new Date(context.now.getTime() - 8 * 864e5).toISOString();
3239
+ tx.insert(seoProfiles).values({ projectId: project.id, id: profileId, revision: 1, input, createdAt, updatedAt: createdAt }).run();
3240
+ for (const daysAgo of [8, 1]) {
3241
+ const capturedAt = new Date(context.now.getTime() - daysAgo * 864e5).toISOString();
3242
+ const runId = `demo-seo-${project.id}-${profileId}-${daysAgo}`;
3243
+ tx.insert(runs).values({ id: runId, projectId: project.id, kind: RunKinds["seo-sync"], status: RunStatuses.completed, trigger: RunTriggers.manual, createdAt: capturedAt, startedAt: capturedAt, finishedAt: capturedAt }).run();
3244
+ tx.insert(seoJobs).values({
3245
+ id: runId,
3246
+ runId,
3247
+ projectId: project.id,
3248
+ projectKey: project.id,
3249
+ profileId,
3250
+ profileRevision: 1,
3251
+ profile: input,
3252
+ scopeSnapshot: { mode: plan ? "advanced" : "simple", scope: input.scope, ...version ? { planRevision: version.revision, planVersionId: version.id } : {} },
3253
+ requestHash: runId,
3254
+ idempotencyKey: runId,
3255
+ principalId: "public-demo-viewer",
3256
+ connectionId: input.connectionId,
3257
+ accountKey: "demo-no-provider-account",
3258
+ buckets: [],
3259
+ status: SeoRunStatuses.completed,
3260
+ createdAt: capturedAt,
3261
+ startedAt: capturedAt,
3262
+ finishedAt: capturedAt
3263
+ }).run();
3264
+ for (const capability of input.capabilities) {
3265
+ const provenance = { provider: SeoProviders.dataforseo, dataset: `demo-${capability}`, engine: "google", locationCode: input.locationCode, languageCode: input.languageCode, device: "unspecified", collectedAt: capturedAt, sourceUpdatedAt: capturedAt };
3266
+ const results = emptySeoResults();
3267
+ const target = input.targets[0] ?? null;
3268
+ if (capability === SeoCapabilities["keyword-metrics"]) {
3269
+ results.keywordMetrics = input.keywords.map((keyword) => {
3270
+ const index = keywords.indexOf(keyword);
3271
+ return {
3272
+ keyword,
3273
+ searchVolume: 2400 + index * 320,
3274
+ cpcUsd: 2.4 + index * 0.65,
3275
+ adCompetition: 0.52,
3276
+ keywordDifficulty: 28 + index * 3,
3277
+ searchIntent: "commercial",
3278
+ coreKeyword: null,
3279
+ provenance,
3280
+ monthlySearches: Array.from({ length: 6 }, (_, month) => {
3281
+ const date = new Date(Date.UTC(context.now.getUTCFullYear(), context.now.getUTCMonth() - 6 + month, 1));
3282
+ return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, searchVolume: 2e3 + index * 320 + month * 80 };
3283
+ })
3284
+ };
3285
+ });
3286
+ } else if (capability === SeoCapabilities["domain-intelligence"] && target) {
3287
+ results.domainIntelligence = [{ target, organicKeywords: plan ? 3240 : 486, estimatedOrganicTraffic: plan ? 18400 : 2750, estimatedOrganicTrafficValueUsd: plan ? 46200 : 9100, top1: plan ? 126 : 18, top2To3: plan ? 284 : 42, top4To10: plan ? 812 : 116, top11To20: plan ? 640 : 94, provenance }];
3288
+ } else if (capability === SeoCapabilities["ranked-keywords"] && target) {
3289
+ results.rankedKeywords = input.keywords.map((keyword, index) => ({
3290
+ target,
3291
+ keyword,
3292
+ url: `https://${project.domain}${plan ? properties[index].path : ["/services/roof-repair/", "/services/roof-replacement/", "/services/metal-roofing/", "/services/emergency-roof-repair/", "/services/shingle-roofing/", "/services/storm-damage/", "/services/roof-inspection/", "/services/flat-roofing/"][index]}`,
3293
+ rankOrganic: index + (daysAgo === 1 ? 2 : 4),
3294
+ rankAbsolute: index + (daysAgo === 1 ? 4 : 6),
3295
+ searchVolume: 2400 + index * 320,
3296
+ estimatedTraffic: 420 - index * 25,
3297
+ cpcUsd: 2.4 + index * 0.65,
3298
+ keywordDifficulty: 28 + index * 3,
3299
+ serpFeatures: index % 2 === 0 ? ["local_pack", "people_also_ask"] : ["people_also_ask"],
3300
+ provenance
3301
+ }));
3302
+ }
3303
+ tx.insert(seoTasks).values({
3304
+ id: `${runId}-${capability}`,
3305
+ jobId: runId,
3306
+ request: { capability, target: capability === SeoCapabilities["keyword-metrics"] ? null : target, keywords: capability === SeoCapabilities["keyword-metrics"] ? input.keywords : [], locationCode: input.locationCode, languageCode: input.languageCode, limit: input.limit, tag: runId },
3307
+ status: SeoRunStatuses.completed,
3308
+ catalogRevision: "demo",
3309
+ collectionOutcome: SeoAdapterOutcomes.completed,
3310
+ reservedMicros: 0,
3311
+ actualMicros: 0,
3312
+ receipts: [],
3313
+ results,
3314
+ startedAt: capturedAt,
3315
+ finishedAt: capturedAt
3316
+ }).run();
3317
+ }
3318
+ }
3319
+ }
3320
+ }
3321
+ });
3322
+ }
3323
+
3179
3324
  // src/demo/stores.ts
3180
- import { and as and4, eq as eq5 } from "drizzle-orm";
3325
+ import { and as and4, eq as eq6 } from "drizzle-orm";
3181
3326
  function refuseMutation() {
3182
3327
  throw new Error("The public demo stores are view only.");
3183
3328
  }
@@ -3196,9 +3341,9 @@ function demoReadOptions(db, context) {
3196
3341
  // allowed, and no Google client id, secret, token, or transport is wired.
3197
3342
  googleStateSecret: "public-demo-no-oauth-callbacks",
3198
3343
  googleConnectionStore: {
3199
- listConnections: (domain) => db.select().from(googleConnections).where(eq5(googleConnections.domain, domain)).all().map(mapGoogle),
3344
+ listConnections: (domain) => db.select().from(googleConnections).where(eq6(googleConnections.domain, domain)).all().map(mapGoogle),
3200
3345
  getConnection: (domain, type) => {
3201
- const row = db.select().from(googleConnections).where(and4(eq5(googleConnections.domain, domain), eq5(googleConnections.connectionType, type))).get();
3346
+ const row = db.select().from(googleConnections).where(and4(eq6(googleConnections.domain, domain), eq6(googleConnections.connectionType, type))).get();
3202
3347
  return row ? mapGoogle(row) : void 0;
3203
3348
  },
3204
3349
  upsertConnection: refuseMutation,
@@ -3207,7 +3352,7 @@ function demoReadOptions(db, context) {
3207
3352
  },
3208
3353
  bingConnectionStore: {
3209
3354
  getConnection: (domain) => {
3210
- const row = db.select().from(bingConnections).where(eq5(bingConnections.domain, domain)).get();
3355
+ const row = db.select().from(bingConnections).where(eq6(bingConnections.domain, domain)).get();
3211
3356
  return row ? { domain, siteUrl: row.siteUrl, apiKey: "", createdAt: row.createdAt, updatedAt: row.updatedAt } : void 0;
3212
3357
  },
3213
3358
  upsertConnection: refuseMutation,
@@ -3265,6 +3410,7 @@ async function createDemoServer(options = {}) {
3265
3410
  await seedDemoSignals(db, context);
3266
3411
  seedDemoExploration(db, context);
3267
3412
  seedDemoMarketing(db, context);
3413
+ seedDemoSeo(db, context);
3268
3414
  const aeroPreviews = buildDemoAeroPreviews(db, context);
3269
3415
  const app = await createDemoHttpServer({
3270
3416
  db,
package/dist/index.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-SXGLLWS4.js";
6
+ } from "./chunk-CYVQW32W.js";
7
7
  import "./chunk-52NCZIAC.js";
8
- import "./chunk-2DZYA62C.js";
9
- import "./chunk-QFO7JHX2.js";
8
+ import "./chunk-5D4RL23M.js";
9
+ import "./chunk-A5F5E4DL.js";
10
10
  import "./chunk-ELCLGWUT.js";
11
11
  import "./chunk-XEBKF4N5.js";
12
12
  import "./chunk-6IBLGQVZ.js";
@@ -28,9 +28,9 @@ import "./chunk-QSPLYPVA.js";
28
28
  import "./chunk-N2HCXIQ3.js";
29
29
  import "./chunk-AOJU5LKX.js";
30
30
  import "./chunk-HGMYEDAQ.js";
31
- import "./chunk-NMLVLFF7.js";
31
+ import "./chunk-65YQFVJM.js";
32
32
  import "./chunk-L7TKNHEX.js";
33
- import "./chunk-NWQQYLZV.js";
33
+ import "./chunk-QEJBAPDP.js";
34
34
  import "./chunk-Q4J3XSWE.js";
35
35
  import "./chunk-27SGL3DF.js";
36
36
  import "./chunk-SCS7R2ND.js";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  buildSetupState,
9
9
  queueServeHandoff
10
- } from "./chunk-JDRKZOUP.js";
10
+ } from "./chunk-NWYNTYPD.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
12
  import "./chunk-YDSY5YJE.js";
13
13
  import "./chunk-3U7LL3JM.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  HISTORY_WINDOW_RUNS,
3
3
  IntelligenceService
4
- } from "./chunk-NMLVLFF7.js";
4
+ } from "./chunk-65YQFVJM.js";
5
5
  import "./chunk-L7TKNHEX.js";
6
- import "./chunk-NWQQYLZV.js";
6
+ import "./chunk-QEJBAPDP.js";
7
7
  import "./chunk-Q4J3XSWE.js";
8
8
  import "./chunk-27SGL3DF.js";
9
9
  import "./chunk-SCS7R2ND.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  backfillAiReferralPaths,
3
3
  backfillNormalizedPaths
4
- } from "./chunk-RXMGU7AF.js";
4
+ } from "./chunk-O6TF6TPM.js";
5
5
  import {
6
6
  operatorHttpUrl
7
7
  } from "./chunk-6GO5VVAC.js";
@@ -9,10 +9,10 @@ import {
9
9
  allowsKeylessFirstRunSetup,
10
10
  createServer,
11
11
  waitForServerRuntimeStartup
12
- } from "./chunk-SXGLLWS4.js";
12
+ } from "./chunk-CYVQW32W.js";
13
13
  import "./chunk-52NCZIAC.js";
14
- import "./chunk-2DZYA62C.js";
15
- import "./chunk-QFO7JHX2.js";
14
+ import "./chunk-5D4RL23M.js";
15
+ import "./chunk-A5F5E4DL.js";
16
16
  import "./chunk-ELCLGWUT.js";
17
17
  import "./chunk-XEBKF4N5.js";
18
18
  import "./chunk-6IBLGQVZ.js";
@@ -55,12 +55,12 @@ import {
55
55
  CliError,
56
56
  isMachineFormat
57
57
  } from "./chunk-HGMYEDAQ.js";
58
- import "./chunk-NMLVLFF7.js";
58
+ import "./chunk-65YQFVJM.js";
59
59
  import "./chunk-L7TKNHEX.js";
60
60
  import {
61
61
  refreshSnapshotMentionIdentity,
62
62
  snapshotsWithSentimentResults
63
- } from "./chunk-NWQQYLZV.js";
63
+ } from "./chunk-QEJBAPDP.js";
64
64
  import "./chunk-Q4J3XSWE.js";
65
65
  import "./chunk-27SGL3DF.js";
66
66
  import {
@@ -10,8 +10,8 @@ import {
10
10
  resolveAeroSkillDir,
11
11
  resolveConfiguredAgentProvider,
12
12
  resolveSessionProviderAndModel
13
- } from "./chunk-2DZYA62C.js";
14
- import "./chunk-QFO7JHX2.js";
13
+ } from "./chunk-5D4RL23M.js";
14
+ import "./chunk-A5F5E4DL.js";
15
15
  import "./chunk-NCIPNVD6.js";
16
16
  import "./chunk-F6W7FCS2.js";
17
17
  import {
@@ -24,7 +24,7 @@ import "./chunk-QSPLYPVA.js";
24
24
  import "./chunk-N2HCXIQ3.js";
25
25
  import "./chunk-AOJU5LKX.js";
26
26
  import "./chunk-HGMYEDAQ.js";
27
- import "./chunk-NWQQYLZV.js";
27
+ import "./chunk-QEJBAPDP.js";
28
28
  import "./chunk-Q4J3XSWE.js";
29
29
  import "./chunk-27SGL3DF.js";
30
30
  import "./chunk-SCS7R2ND.js";
@@ -11,7 +11,7 @@ import {
11
11
  buildAllTools,
12
12
  buildReadTools,
13
13
  isAeroToolProfile
14
- } from "./chunk-QFO7JHX2.js";
14
+ } from "./chunk-A5F5E4DL.js";
15
15
  import "./chunk-F6W7FCS2.js";
16
16
  import "./chunk-TVANRUBO.js";
17
17
  import "./chunk-YJPQBJZO.js";
@@ -19,7 +19,7 @@ import "./chunk-QSPLYPVA.js";
19
19
  import "./chunk-N2HCXIQ3.js";
20
20
  import "./chunk-AOJU5LKX.js";
21
21
  import "./chunk-HGMYEDAQ.js";
22
- import "./chunk-NWQQYLZV.js";
22
+ import "./chunk-QEJBAPDP.js";
23
23
  import "./chunk-Q4J3XSWE.js";
24
24
  import "./chunk-27SGL3DF.js";
25
25
  import "./chunk-SCS7R2ND.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonry/canonry",
3
- "version": "7.58.3",
3
+ "version": "7.58.5",
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": [