@ainyc/canonry 4.139.0 → 4.139.1
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/reporting.md +22 -1
- package/assets/assets/{AuditHistoryPanel-DL9chF3F.js → AuditHistoryPanel-FiMbN4_a.js} +1 -1
- package/assets/assets/{BacklinksPage-sA_tgQJv.js → BacklinksPage-CLRIsKHN.js} +1 -1
- package/assets/assets/{ChartPrimitives-D7nLxIbe.js → ChartPrimitives-BuTqG5NR.js} +1 -1
- package/assets/assets/{HistoryPage-CLWbcu5m.js → HistoryPage-BWRbsFAT.js} +1 -1
- package/assets/assets/{ProjectPage-C_oXMCNU.js → ProjectPage-DQ2kIj-L.js} +1 -1
- package/assets/assets/{RunRow-DQ4icEiv.js → RunRow-BZobaeDq.js} +1 -1
- package/assets/assets/{RunsPage-D5sizm9T.js → RunsPage-DhrY4Ouc.js} +1 -1
- package/assets/assets/{SettingsPage-XdQjvWsg.js → SettingsPage-C6VcJEgB.js} +1 -1
- package/assets/assets/{TrafficPage-C12osXDa.js → TrafficPage-KqYl5HUH.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-CXAiNK8Y.js → TrafficSourceDetailPage-mMJi-QZr.js} +1 -1
- package/assets/assets/{arrow-left-LaI5a16g.js → arrow-left-CpLow2Kp.js} +1 -1
- package/assets/assets/{extract-error-message-CYWaTM3m.js → extract-error-message-dHq11Y4U.js} +1 -1
- package/assets/assets/{index-CguwySA5.js → index-iRW7X23W.js} +98 -98
- package/assets/assets/{trash-2-DoH00q7m.js → trash-2-CnEPNBqu.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-IGU67QFM.js → chunk-DJHSOPMU.js} +2 -0
- package/dist/{chunk-DLKUDNDA.js → chunk-YLHZQ7HQ.js} +38 -2
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.js +2 -2
- package/dist/{intelligence-service-SMYVN3KN.js → intelligence-service-BGH2MGHB.js} +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-iRW7X23W.js";const t=[["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"}]],h=a("circle-question-mark",t);const e=[["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"}]],d=a("download",e);const o=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],p=a("external-link",o);const c=[["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"}]],s=a("trash-2",c);export{h as C,d as D,p as E,s as T};
|
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-iRW7X23W.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-Be8JdV5M.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-CQ77EO2y.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-DSxTZhaH.js">
|
|
@@ -45946,6 +45946,8 @@ export {
|
|
|
45946
45946
|
extractRecommendedCompetitors,
|
|
45947
45947
|
getPlaceDetails,
|
|
45948
45948
|
hashPlaceDetails,
|
|
45949
|
+
latestQueryBasketRevision,
|
|
45950
|
+
ensureCurrentQueryBasketRevision,
|
|
45949
45951
|
queueRunIfProjectIdle,
|
|
45950
45952
|
nextRunFromCron,
|
|
45951
45953
|
resolveWebhookTarget,
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
doctorHealthState,
|
|
54
54
|
downloadFile,
|
|
55
55
|
dropLegacyCredentialColumns,
|
|
56
|
+
ensureCurrentQueryBasketRevision,
|
|
56
57
|
executeDiscovery,
|
|
57
58
|
extractLegacyCredentials,
|
|
58
59
|
extractRecommendedCompetitors,
|
|
@@ -88,6 +89,7 @@ import {
|
|
|
88
89
|
installDuckdb,
|
|
89
90
|
isDuckdbInstalled,
|
|
90
91
|
isValidReleaseId,
|
|
92
|
+
latestQueryBasketRevision,
|
|
91
93
|
listCachedReleases,
|
|
92
94
|
listLocations,
|
|
93
95
|
listMonthlyKeywords,
|
|
@@ -121,7 +123,7 @@ import {
|
|
|
121
123
|
siteAuditSnapshots,
|
|
122
124
|
toAlertView,
|
|
123
125
|
usageCounters
|
|
124
|
-
} from "./chunk-
|
|
126
|
+
} from "./chunk-DJHSOPMU.js";
|
|
125
127
|
import {
|
|
126
128
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
127
129
|
AGENT_PROVIDER_IDS,
|
|
@@ -7176,7 +7178,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
7176
7178
|
return result;
|
|
7177
7179
|
}
|
|
7178
7180
|
async function backfillInsightsCommand(project, opts) {
|
|
7179
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
7181
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-BGH2MGHB.js");
|
|
7180
7182
|
const config = loadConfig();
|
|
7181
7183
|
const db = createClient(config.database);
|
|
7182
7184
|
migrate(db);
|
|
@@ -8151,9 +8153,36 @@ var Scheduler = class {
|
|
|
8151
8153
|
}
|
|
8152
8154
|
log13.info("health-schedule.seeded", { projectCount: projectsWithoutHealth.length, cron: DEFAULT_HEALTH_CRON });
|
|
8153
8155
|
}
|
|
8156
|
+
/**
|
|
8157
|
+
* Record each project's current query set as basket revision 1 if it has
|
|
8158
|
+
* never been recorded. Minting normally happens when a sweep is queued, but a
|
|
8159
|
+
* project whose sweeps are manual (the common cadence: twice a month) would
|
|
8160
|
+
* otherwise keep its analytics on the pre-basket date heuristic for weeks
|
|
8161
|
+
* after the feature ships — with the chart still hiding exactly the history
|
|
8162
|
+
* the basket exists to recover. Boot is the moment the current set is known
|
|
8163
|
+
* and nothing has to be guessed, and ensureCurrentQueryBasketRevision is
|
|
8164
|
+
* idempotent, so restarts are no-ops and an unchanged set never churns
|
|
8165
|
+
* revisions. Runs are NOT stamped retroactively: the revision describes the
|
|
8166
|
+
* set as of now, and historical runs keep their null stamp.
|
|
8167
|
+
*/
|
|
8168
|
+
ensureQueryBaskets() {
|
|
8169
|
+
const allProjects = this.db.select({ id: projects.id }).from(projects).all();
|
|
8170
|
+
let minted = 0;
|
|
8171
|
+
for (const project of allProjects) {
|
|
8172
|
+
try {
|
|
8173
|
+
const previous = latestQueryBasketRevision(this.db, project.id)?.revision ?? null;
|
|
8174
|
+
const current = ensureCurrentQueryBasketRevision(this.db, project.id);
|
|
8175
|
+
if (current !== null && current.revision !== previous) minted += 1;
|
|
8176
|
+
} catch (err) {
|
|
8177
|
+
log13.warn("query-basket.mint-failed", { projectId: project.id, err: String(err) });
|
|
8178
|
+
}
|
|
8179
|
+
}
|
|
8180
|
+
if (minted > 0) log13.info("query-basket.ensured", { projectCount: minted });
|
|
8181
|
+
}
|
|
8154
8182
|
/** Load all enabled schedules from DB and register cron jobs. */
|
|
8155
8183
|
start() {
|
|
8156
8184
|
this.ensureHealthSchedules();
|
|
8185
|
+
this.ensureQueryBaskets();
|
|
8157
8186
|
const allSchedules = this.db.select().from(schedules).where(eq14(schedules.enabled, true)).all();
|
|
8158
8187
|
for (const schedule of allSchedules) {
|
|
8159
8188
|
const missedRunAt = schedule.nextRunAt;
|
|
@@ -11979,6 +12008,9 @@ function parseBooleanEnv(value) {
|
|
|
11979
12008
|
function resolveDashboardRequirePassword(env, config) {
|
|
11980
12009
|
return parseBooleanEnv(env.CANONRY_DASHBOARD_REQUIRE_PASSWORD) ?? config.dashboard?.requirePassword ?? true;
|
|
11981
12010
|
}
|
|
12011
|
+
function resolveDashboardShowResourceLinks(env, config) {
|
|
12012
|
+
return parseBooleanEnv(env.CANONRY_DASHBOARD_SHOW_RESOURCE_LINKS) ?? config.dashboard?.showResourceLinks ?? true;
|
|
12013
|
+
}
|
|
11982
12014
|
var API_ADAPTERS = [
|
|
11983
12015
|
geminiAdapter,
|
|
11984
12016
|
openaiAdapter,
|
|
@@ -12843,6 +12875,7 @@ async function createServer(opts) {
|
|
|
12843
12875
|
);
|
|
12844
12876
|
}
|
|
12845
12877
|
const dashboardRequirePassword = resolveDashboardRequirePassword(process.env, opts.config);
|
|
12878
|
+
const dashboardShowResourceLinks = resolveDashboardShowResourceLinks(process.env, opts.config);
|
|
12846
12879
|
app.log.info(
|
|
12847
12880
|
{ dashboardRequirePassword },
|
|
12848
12881
|
"Dashboard password gate resolved"
|
|
@@ -13592,6 +13625,9 @@ async function createServer(opts) {
|
|
|
13592
13625
|
const injectConfig = (html, projectTabsOverride, themeOverride, renderTokenOverride) => {
|
|
13593
13626
|
const clientConfig = {};
|
|
13594
13627
|
if (basePath) clientConfig.basePath = basePath;
|
|
13628
|
+
if (!dashboardShowResourceLinks) {
|
|
13629
|
+
clientConfig.dashboard = { showResourceLinks: false };
|
|
13630
|
+
}
|
|
13595
13631
|
if (embed.enabled) {
|
|
13596
13632
|
const embedClient = embedClientConfigForRequest(embed, projectTabsOverride, themeOverride, renderTokenOverride);
|
|
13597
13633
|
if (embedClient) clientConfig.embed = embedClient;
|
package/dist/cli.js
CHANGED
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
showFirstRunNotice,
|
|
31
31
|
trackCliCommandFinished,
|
|
32
32
|
trackEvent
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-YLHZQ7HQ.js";
|
|
34
34
|
import {
|
|
35
35
|
CliError,
|
|
36
36
|
EXIT_SYSTEM_ERROR,
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
projects,
|
|
56
56
|
queries,
|
|
57
57
|
renderReportHtml
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-DJHSOPMU.js";
|
|
59
59
|
import {
|
|
60
60
|
AdsDeliverySnapshotStatuses,
|
|
61
61
|
AdsHistoricalCampaignRollupStatuses,
|
package/dist/index.d.ts
CHANGED
|
@@ -190,6 +190,12 @@ interface DashboardConfigEntry {
|
|
|
190
190
|
* and the engine is not directly internet-reachable.
|
|
191
191
|
*/
|
|
192
192
|
requirePassword?: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Whether the dashboard sidebar and page footer show the Canonry GitHub,
|
|
195
|
+
* documentation, and changelog links. Defaults to true. Disable for a
|
|
196
|
+
* quieter branded UI.
|
|
197
|
+
*/
|
|
198
|
+
showResourceLinks?: boolean;
|
|
193
199
|
}
|
|
194
200
|
/**
|
|
195
201
|
* Google Places API config — supplemental rendered-listing data for GBP
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YLHZQ7HQ.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig
|
|
6
6
|
} from "./chunk-IYTHIAAE.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-DJHSOPMU.js";
|
|
8
8
|
import "./chunk-OA2EGCUS.js";
|
|
9
9
|
export {
|
|
10
10
|
createServer,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ainyc/canonry",
|
|
3
|
-
"version": "4.139.
|
|
3
|
+
"version": "4.139.1",
|
|
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",
|
|
@@ -73,19 +73,19 @@
|
|
|
73
73
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
74
74
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
75
75
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
76
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
76
77
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
77
78
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
78
|
-
"@ainyc/canonry-integration-
|
|
79
|
-
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
79
|
+
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
80
80
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
81
81
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
82
|
-
"@ainyc/canonry-integration-
|
|
82
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
83
83
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
84
|
-
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
85
84
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
85
|
+
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
86
86
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
87
|
-
"@ainyc/canonry-provider-
|
|
88
|
-
"@ainyc/canonry-provider-
|
|
87
|
+
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
88
|
+
"@ainyc/canonry-provider-openai": "0.0.0"
|
|
89
89
|
},
|
|
90
90
|
"scripts": {
|
|
91
91
|
"build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",
|