@canonry/canonry 7.5.1 → 7.7.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/SKILL.md +39 -1
- package/assets/agent-workspace/skills/canonry/references/aeo-analysis.md +2 -2
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +8 -0
- package/assets/assets/{AuditHistoryPanel-B5aLMnWE.js → AuditHistoryPanel-qumC-I56.js} +1 -1
- package/assets/assets/{BacklinksPage-Biq1jrqe.js → BacklinksPage-BNyYcY5w.js} +1 -1
- package/assets/assets/{HistoryPage-CGGkAgnz.js → HistoryPage-CQfOM6NA.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-BwyWGGBg.js → MeasurementPropertyPage-D0LTQHL7.js} +1 -1
- package/assets/assets/{ProjectPage-DEnKyD3e.js → ProjectPage-QQErJAT8.js} +1 -1
- package/assets/assets/{RunsPage-DNBn0Rau.js → RunsPage-CniAGDVF.js} +1 -1
- package/assets/assets/{SettingsPage-D3m-BLuf.js → SettingsPage-BPsrE4ao.js} +1 -1
- package/assets/assets/{SiteHealthSection-CPMu1l-l.js → SiteHealthSection-zW3ykBCu.js} +3 -3
- package/assets/assets/{TrafficPage-BCK_V__i.js → TrafficPage-DXKk92zy.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-DaCehUm8.js → TrafficSourceDetailPage-4POLIA_c.js} +1 -1
- package/assets/assets/{extract-error-message-CqBLzzuR.js → extract-error-message-C6t0hB2w.js} +1 -1
- package/assets/assets/{index-C2X_UARl.js → index-DBQ-8jB1.js} +24 -24
- package/assets/assets/{react-sigma_core.esm.min-BvO4SZKT.js → react-sigma_core.esm.min-D7GjzWYV.js} +1 -1
- package/assets/assets/{v2-overview-adapter-CgDChBa5.js → v2-overview-adapter-ChE5k_dV.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-VVEMJCC6.js → chunk-3DB43KT2.js} +4 -2
- package/dist/{chunk-JTQ4KFIR.js → chunk-75RSUOHZ.js} +430 -279
- package/dist/{chunk-Y7K5NMNV.js → chunk-JJXTHJ4E.js} +2 -2
- package/dist/{chunk-HAWCV4SU.js → chunk-LFUSODDL.js} +45 -22
- package/dist/{chunk-KJIXDPYH.js → chunk-ODEAE5T5.js} +3 -3
- package/dist/{chunk-56YOI7QX.js → chunk-WBTYXLXL.js} +2 -2
- package/dist/{chunk-RVM6QJQT.js → chunk-WJJTKZKK.js} +5509 -5464
- package/dist/cli.js +24 -12
- package/dist/{demo-server-V3DDLXND.js → demo-server-UWBPY743.js} +4 -4
- package/dist/index.js +6 -6
- package/dist/{intelligence-service-MZVPWIXL.js → intelligence-service-LOH37GPJ.js} +2 -2
- package/dist/mcp.js +4 -4
- package/package.json +8 -8
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
siteCrawlGraphNodes,
|
|
6
6
|
siteCrawlPages,
|
|
7
7
|
siteCrawlSnapshots
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-75RSUOHZ.js";
|
|
9
9
|
import {
|
|
10
10
|
SITE_CRAWL_GRAPH_MAX_EDGES,
|
|
11
11
|
SITE_CRAWL_GRAPH_MAX_NODES,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TEMPLATE_LINK_RATIO_THRESHOLD,
|
|
14
14
|
factorStatusFromScore,
|
|
15
15
|
roundPreservingTotal
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-WJJTKZKK.js";
|
|
17
17
|
|
|
18
18
|
// src/site-audit-factors.ts
|
|
19
19
|
function recordedSharePct(factor) {
|
|
@@ -20,20 +20,20 @@ import {
|
|
|
20
20
|
saveConfig,
|
|
21
21
|
saveConfigPatch,
|
|
22
22
|
sentimentInstallReadiness
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-WBTYXLXL.js";
|
|
24
24
|
import {
|
|
25
25
|
computeFactorAverages,
|
|
26
26
|
deleteSiteCrawlGraphLayout,
|
|
27
27
|
persistSiteCrawlGraphLayout,
|
|
28
28
|
prepareSiteCrawlGraphLayout,
|
|
29
29
|
recordedSharePct
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-JJXTHJ4E.js";
|
|
31
31
|
import {
|
|
32
32
|
CanonryMcpToolNames,
|
|
33
33
|
CliError,
|
|
34
34
|
PACKAGE_VERSION,
|
|
35
35
|
canonryMcpTools
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-3DB43KT2.js";
|
|
37
37
|
import {
|
|
38
38
|
CC_CACHE_DIR,
|
|
39
39
|
DUCKDB_SPEC,
|
|
@@ -205,7 +205,7 @@ import {
|
|
|
205
205
|
siteLivenessState,
|
|
206
206
|
toAlertView,
|
|
207
207
|
usageCounters
|
|
208
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-75RSUOHZ.js";
|
|
209
209
|
import {
|
|
210
210
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
211
211
|
AGENT_NONE,
|
|
@@ -282,6 +282,7 @@ import {
|
|
|
282
282
|
authRequired,
|
|
283
283
|
backoffDelayMs,
|
|
284
284
|
bucketOnboardingCount,
|
|
285
|
+
buildProviderRunError,
|
|
285
286
|
buildRunErrorFromMessages,
|
|
286
287
|
buildSimpleMeasurementDefinition,
|
|
287
288
|
buildSnapshotUsage,
|
|
@@ -411,7 +412,7 @@ import {
|
|
|
411
412
|
visibilityReportRequestSchema,
|
|
412
413
|
winnabilityClassLabel,
|
|
413
414
|
withRetry
|
|
414
|
-
} from "./chunk-
|
|
415
|
+
} from "./chunk-WJJTKZKK.js";
|
|
415
416
|
|
|
416
417
|
// src/runtime-context.ts
|
|
417
418
|
function cliRuntimeContext(env = process.env, stdio = process) {
|
|
@@ -7869,7 +7870,7 @@ function nonBlank(value) {
|
|
|
7869
7870
|
return trimmed ? trimmed : void 0;
|
|
7870
7871
|
}
|
|
7871
7872
|
function resolveBuildCommit(env = process.env) {
|
|
7872
|
-
const embedded = true ? "
|
|
7873
|
+
const embedded = true ? "0860f29cce58a29483357e3fd66869877e7a393c" : void 0;
|
|
7873
7874
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
7874
7875
|
}
|
|
7875
7876
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -8288,7 +8289,7 @@ function runOutcome(inserted, providerErrors, planShortfall) {
|
|
|
8288
8289
|
const allFailed = inserted === 0 && someFailed;
|
|
8289
8290
|
return {
|
|
8290
8291
|
status: allFailed ? RunStatuses.failed : someFailed ? RunStatuses.partial : RunStatuses.completed,
|
|
8291
|
-
error: someFailed ? serializeRunError(
|
|
8292
|
+
error: someFailed ? serializeRunError(buildProviderRunError(providerErrors)) : null
|
|
8292
8293
|
};
|
|
8293
8294
|
}
|
|
8294
8295
|
function competitorIdentityKey(rows) {
|
|
@@ -9869,7 +9870,7 @@ var JobRunner = class {
|
|
|
9869
9870
|
if (justCompleted && parent) recordSentimentCompletion(tx, { projectId: parent.projectId, runId: input.runId, completionKey: input.fillId, completedAt: finishedAt, fillOrigin: input.fillId });
|
|
9870
9871
|
} else if (state.readable && !input.fatal) {
|
|
9871
9872
|
const previous = parseRunError(parent?.error)?.providers ?? {};
|
|
9872
|
-
const fresh =
|
|
9873
|
+
const fresh = buildProviderRunError(input.providerErrors).providers ?? {};
|
|
9873
9874
|
const remaining = /* @__PURE__ */ new Map();
|
|
9874
9875
|
for (const slot of state.missing) remaining.set(slot.provider, (remaining.get(slot.provider) ?? 0) + 1);
|
|
9875
9876
|
const providers = {};
|
|
@@ -14856,6 +14857,15 @@ var Scheduler = class {
|
|
|
14856
14857
|
if (!claimedOccurrence) this.updateScheduleTiming(currentSchedule.id, { nextRunAt });
|
|
14857
14858
|
return;
|
|
14858
14859
|
}
|
|
14860
|
+
if (queueResult.refused) {
|
|
14861
|
+
log15.warn("run.skipped-providers-failing", {
|
|
14862
|
+
projectName: project.name,
|
|
14863
|
+
scheduleId: currentSchedule.id,
|
|
14864
|
+
...queueResult.refused
|
|
14865
|
+
});
|
|
14866
|
+
if (!claimedOccurrence) this.updateScheduleTiming(currentSchedule.id, { nextRunAt });
|
|
14867
|
+
return;
|
|
14868
|
+
}
|
|
14859
14869
|
const runId = queueResult.runId;
|
|
14860
14870
|
for (const [provider, reason] of Object.entries(queueResult.dispatch.ineligible)) {
|
|
14861
14871
|
if (!reason) continue;
|
|
@@ -16856,16 +16866,10 @@ function mcpToAgentTool(tool, ctx) {
|
|
|
16856
16866
|
};
|
|
16857
16867
|
}
|
|
16858
16868
|
var AERO_EXCLUDED_MCP_TOOLS = /* @__PURE__ */ new Set([
|
|
16859
|
-
//
|
|
16860
|
-
|
|
16869
|
+
// Aero reads stored sentiment. Turning it on and submitting a backfill start
|
|
16870
|
+
// paid classifier work, so they stay with the operator (API, CLI, external MCP).
|
|
16861
16871
|
"canonry_sentiment_configure",
|
|
16862
|
-
"canonry_sentiment",
|
|
16863
|
-
"canonry_sentiment_evidence",
|
|
16864
|
-
"canonry_sentiment_compare",
|
|
16865
|
-
"canonry_sentiment_backfill_preview",
|
|
16866
16872
|
"canonry_sentiment_backfill",
|
|
16867
|
-
"canonry_sentiment_jobs",
|
|
16868
|
-
"canonry_sentiment_job",
|
|
16869
16873
|
CanonryMcpToolNames.canonry_agent_clear,
|
|
16870
16874
|
CanonryMcpToolNames.canonry_agent_conversations_new,
|
|
16871
16875
|
CanonryMcpToolNames.canonry_agent_conversations_resume,
|
|
@@ -17288,6 +17292,7 @@ var MAX_VISIBLE_TOOLS = 128;
|
|
|
17288
17292
|
var LOAD = "aero_load_toolkit";
|
|
17289
17293
|
var metadata = new Map(canonryMcpTools.map((tool) => [tool.name, tool]));
|
|
17290
17294
|
var runtimes = /* @__PURE__ */ new WeakMap();
|
|
17295
|
+
var TOOL_LIMIT_WRAP_UP = "This turn has used its tool budget, and no tools are available now. Answer the question from the tool results above: give what they establish with their numbers, say plainly which parts you could not check, and suggest one narrower question the user could ask next.";
|
|
17291
17296
|
function result(value) {
|
|
17292
17297
|
return { content: [{ type: "text", text: truncateToolResult(value) }], details: value };
|
|
17293
17298
|
}
|
|
@@ -17412,7 +17417,7 @@ function explainMissingTool(runtime, message) {
|
|
|
17412
17417
|
function configureAeroRuntime(agent, allowed, limits, progressive = true, pinned = []) {
|
|
17413
17418
|
let runtime = runtimes.get(agent);
|
|
17414
17419
|
if (!runtime) {
|
|
17415
|
-
runtime = { allowed, loaded: /* @__PURE__ */ new Set(), limits: agentTurnLimitsSchema.parse(limits ?? {}), calls: 0, rounds: 0, startedAt: 0, reason: "completed", progressive, pinned: new Set(pinned), corrected: /* @__PURE__ */ new Map() };
|
|
17420
|
+
runtime = { allowed, loaded: /* @__PURE__ */ new Set(), limits: agentTurnLimitsSchema.parse(limits ?? {}), calls: 0, rounds: 0, startedAt: 0, reason: "completed", progressive, pinned: new Set(pinned), corrected: /* @__PURE__ */ new Map(), wrapUp: false };
|
|
17416
17421
|
runtimes.set(agent, runtime);
|
|
17417
17422
|
const state = runtime;
|
|
17418
17423
|
const stream = agent.streamFunction;
|
|
@@ -17431,7 +17436,22 @@ function configureAeroRuntime(agent, allowed, limits, progressive = true, pinned
|
|
|
17431
17436
|
return before?.(event, signal);
|
|
17432
17437
|
};
|
|
17433
17438
|
const finish = agent.finishTurn;
|
|
17434
|
-
agent.finishTurn = (turn, signal) =>
|
|
17439
|
+
agent.finishTurn = (turn, signal) => {
|
|
17440
|
+
if (state.reason !== "tool-limit") return finish?.(turn, signal);
|
|
17441
|
+
if (state.wrapUp) return { action: "end" };
|
|
17442
|
+
state.wrapUp = true;
|
|
17443
|
+
return { action: "continue" };
|
|
17444
|
+
};
|
|
17445
|
+
const prepare = agent.prepareNextTurnWithContext;
|
|
17446
|
+
agent.prepareNextTurnWithContext = (turn, signal) => {
|
|
17447
|
+
if (state.reason === "tool-limit" && state.wrapUp) {
|
|
17448
|
+
return {
|
|
17449
|
+
context: { ...turn.context, tools: [] },
|
|
17450
|
+
messages: [{ role: "system", content: TOOL_LIMIT_WRAP_UP, timestamp: Date.now() }]
|
|
17451
|
+
};
|
|
17452
|
+
}
|
|
17453
|
+
return prepare ? prepare(turn, signal) : agent.prepareNextTurn?.(signal);
|
|
17454
|
+
};
|
|
17435
17455
|
agent.afterToolCall = async (event, signal) => {
|
|
17436
17456
|
const override = await after?.(event, signal);
|
|
17437
17457
|
if (event.toolCall.name === LOAD && !event.isError) {
|
|
@@ -17476,6 +17496,7 @@ function configureAeroRuntime(agent, allowed, limits, progressive = true, pinned
|
|
|
17476
17496
|
toolDurations.clear();
|
|
17477
17497
|
overLimit.clear();
|
|
17478
17498
|
state.corrected.clear();
|
|
17499
|
+
state.wrapUp = false;
|
|
17479
17500
|
state.calls = 0;
|
|
17480
17501
|
state.rounds = 0;
|
|
17481
17502
|
state.reason = "completed";
|
|
@@ -17489,8 +17510,8 @@ function configureAeroRuntime(agent, allowed, limits, progressive = true, pinned
|
|
|
17489
17510
|
} else if (event.type === "agent_end") {
|
|
17490
17511
|
state.finishedAt = Date.now();
|
|
17491
17512
|
clearTimeout(state.timer);
|
|
17492
|
-
if (state.reason === "completed" && agent.signal?.aborted) state.reason = "stopped";
|
|
17493
|
-
if (state.reason === "completed" && agent.state.errorMessage) state.reason = "error";
|
|
17513
|
+
if ((state.reason === "completed" || state.reason === "tool-limit") && agent.signal?.aborted) state.reason = "stopped";
|
|
17514
|
+
if ((state.reason === "completed" || state.reason === "tool-limit") && agent.state.errorMessage) state.reason = "error";
|
|
17494
17515
|
}
|
|
17495
17516
|
});
|
|
17496
17517
|
}
|
|
@@ -22713,10 +22734,12 @@ async function createServer(opts) {
|
|
|
22713
22734
|
}
|
|
22714
22735
|
}
|
|
22715
22736
|
const afterConfig = summarizeProviderConfig(opts.config.providers[name]);
|
|
22716
|
-
|
|
22737
|
+
const apiKeyRotated = Boolean(existing) && Boolean(apiKey) && apiKey !== existing?.apiKey;
|
|
22738
|
+
if (apiKeyRotated || JSON.stringify(beforeConfig) !== JSON.stringify(afterConfig)) {
|
|
22717
22739
|
const diff = JSON.stringify({
|
|
22718
22740
|
before: existing ? beforeConfig : null,
|
|
22719
|
-
after: afterConfig
|
|
22741
|
+
after: afterConfig,
|
|
22742
|
+
...apiKeyRotated ? { apiKeyRotated: true } : {}
|
|
22720
22743
|
});
|
|
22721
22744
|
const affectedProjectIds = opts.db.select({ id: projects.id, providers: projects.providers }).from(projects).all().filter((project) => {
|
|
22722
22745
|
const configuredProviders = project.providers;
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
installSkills,
|
|
5
5
|
loadConfigRaw,
|
|
6
6
|
saveConfigPatch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WBTYXLXL.js";
|
|
8
8
|
import {
|
|
9
9
|
PACKAGE_VERSION
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3DB43KT2.js";
|
|
11
11
|
import {
|
|
12
12
|
SKILL_MANIFEST_FILENAME,
|
|
13
13
|
SkillsClients
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WJJTKZKK.js";
|
|
15
15
|
|
|
16
16
|
// src/skills-autosync.ts
|
|
17
17
|
import fs from "fs";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
PACKAGE_VERSION,
|
|
6
6
|
canonryMcpTools,
|
|
7
7
|
isMachineFormat
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-3DB43KT2.js";
|
|
9
9
|
import {
|
|
10
10
|
AGENT_PROVIDER_IDS,
|
|
11
11
|
CANONRY_NPM_PACKAGE_URL,
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
skillsClientSchema,
|
|
51
51
|
upgradeCaveatFor,
|
|
52
52
|
upgradeCommandFor
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-WJJTKZKK.js";
|
|
54
54
|
|
|
55
55
|
// src/config.ts
|
|
56
56
|
import fs from "fs";
|