@ainyc/canonry 4.99.1 → 4.100.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.
Files changed (26) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +13 -1
  2. package/assets/assets/{BacklinksPage-v2RC8wlg.js → BacklinksPage-DWZdWEm3.js} +1 -1
  3. package/assets/assets/{ChartPrimitives-B74e5pqn.js → ChartPrimitives-C-ky5206.js} +1 -1
  4. package/assets/assets/{ProjectPage-BCzS7TQn.js → ProjectPage-CpbFpi6J.js} +4 -4
  5. package/assets/assets/{RunRow-BmVPjO-m.js → RunRow-Bj-D4kZe.js} +1 -1
  6. package/assets/assets/{RunsPage-CK5atXvL.js → RunsPage-GktitsAV.js} +1 -1
  7. package/assets/assets/{SettingsPage-DarPFUPl.js → SettingsPage-AsFLFDS3.js} +1 -1
  8. package/assets/assets/{TrafficPage-Ddnn_WqU.js → TrafficPage-Cf3uCkxs.js} +1 -1
  9. package/assets/assets/{TrafficSourceDetailPage-g08SKnwZ.js → TrafficSourceDetailPage-B5t7nf9C.js} +1 -1
  10. package/assets/assets/{arrow-left-D39Vxasb.js → arrow-left-CZFQuQO_.js} +1 -1
  11. package/assets/assets/{extract-error-message-BiNWqBeh.js → extract-error-message--bieZ2IX.js} +1 -1
  12. package/assets/assets/index-9hI0ODQU.css +1 -0
  13. package/assets/assets/index-Cb2h7KkD.js +210 -0
  14. package/assets/assets/{trash-2-xh6gsnap.js → trash-2-sKO0k75f.js} +1 -1
  15. package/assets/index.html +2 -2
  16. package/dist/{chunk-4Q3LBD7A.js → chunk-74SOIAIY.js} +15 -12
  17. package/dist/{chunk-JF7EXHGA.js → chunk-ADLS64PG.js} +105 -0
  18. package/dist/{chunk-YBIT5O62.js → chunk-SNHYRSUF.js} +366 -12
  19. package/dist/{chunk-IDI6LMYL.js → chunk-UVIHWF45.js} +27 -1
  20. package/dist/cli.js +110 -4
  21. package/dist/index.js +4 -4
  22. package/dist/{intelligence-service-TWCEKVKZ.js → intelligence-service-3CRNJLUZ.js} +2 -2
  23. package/dist/mcp.js +2 -2
  24. package/package.json +8 -8
  25. package/assets/assets/index-BCuWbxUj.css +0 -1
  26. package/assets/assets/index-Dd4J1VhB.js +0 -210
@@ -1 +1 @@
1
- import{c}from"./index-Dd4J1VhB.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};
1
+ import{c}from"./index-Cb2h7KkD.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,12 +12,12 @@
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-Dd4J1VhB.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-Cb2h7KkD.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-C9EZkgbP.js">
19
19
  <link rel="modulepreload" crossorigin href="./assets/vendor-markdown-6dwjPOKK.js">
20
- <link rel="stylesheet" crossorigin href="./assets/index-BCuWbxUj.css">
20
+ <link rel="stylesheet" crossorigin href="./assets/index-9hI0ODQU.css">
21
21
  </head>
22
22
  <body>
23
23
  <div id="root"></div>
@@ -9,7 +9,7 @@ import {
9
9
  loadConfig,
10
10
  loadConfigRaw,
11
11
  saveConfigPatch
12
- } from "./chunk-IDI6LMYL.js";
12
+ } from "./chunk-UVIHWF45.js";
13
13
  import {
14
14
  CC_CACHE_DIR,
15
15
  DUCKDB_SPEC,
@@ -111,7 +111,7 @@ import {
111
111
  siteAuditPages,
112
112
  siteAuditSnapshots,
113
113
  usageCounters
114
- } from "./chunk-YBIT5O62.js";
114
+ } from "./chunk-SNHYRSUF.js";
115
115
  import {
116
116
  AGENT_MEMORY_VALUE_MAX_BYTES,
117
117
  AGENT_PROVIDER_IDS,
@@ -171,7 +171,7 @@ import {
171
171
  validationError,
172
172
  winnabilityClassLabel,
173
173
  withRetry
174
- } from "./chunk-JF7EXHGA.js";
174
+ } from "./chunk-ADLS64PG.js";
175
175
 
176
176
  // src/telemetry.ts
177
177
  import crypto from "crypto";
@@ -6403,7 +6403,7 @@ function readStoredGroundingSources(rawResponse) {
6403
6403
  return result;
6404
6404
  }
6405
6405
  async function backfillInsightsCommand(project, opts) {
6406
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-TWCEKVKZ.js");
6406
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-3CRNJLUZ.js");
6407
6407
  const config = loadConfig();
6408
6408
  const db = createClient(config.database);
6409
6409
  migrate(db);
@@ -8020,12 +8020,13 @@ var PROVIDER_MODELS = {
8020
8020
  [LlmCapabilities.classify]: "glm-5-turbo"
8021
8021
  },
8022
8022
  [AgentProviderIds.deepinfra]: {
8023
- // DeepInfra `org/Model` slugs. GLM-5.2 drives the agent loop; the much
8024
- // cheaper DeepSeek-V4-Flash fills analyze + classify. Resolved into a
8025
- // custom openai-completions model, not pi-ai's catalog.
8023
+ // DeepInfra `org/Model` slugs. GLM-5.2 (Sonnet-class) on all three tiers
8024
+ // it undercuts the Claude tiers it replaces, so the cheaper tiers take no
8025
+ // quality hit. Resolved into a custom openai-completions model, not pi-ai's
8026
+ // catalog.
8026
8027
  [LlmCapabilities.agent]: "zai-org/GLM-5.2",
8027
- [LlmCapabilities.analyze]: "deepseek-ai/DeepSeek-V4-Flash",
8028
- [LlmCapabilities.classify]: "deepseek-ai/DeepSeek-V4-Flash"
8028
+ [LlmCapabilities.analyze]: "zai-org/GLM-5.2",
8029
+ [LlmCapabilities.classify]: "zai-org/GLM-5.2"
8029
8030
  }
8030
8031
  };
8031
8032
  var AGENT_PROVIDERS = {
@@ -8130,7 +8131,8 @@ function resolveModelForCapability(provider, capability, modelIdOverride) {
8130
8131
  const entry = AGENT_PROVIDERS[provider];
8131
8132
  const id = modelIdOverride ?? PROVIDER_MODELS[provider][capability];
8132
8133
  if (entry.openaiCompatible) {
8133
- return buildOpenAiCompatibleModel(entry, id);
8134
+ const suppressThinking = capability !== LlmCapabilities.agent;
8135
+ return buildOpenAiCompatibleModel(entry, id, suppressThinking);
8134
8136
  }
8135
8137
  const model = getModel(entry.piAiProvider, id);
8136
8138
  if (!model) {
@@ -8140,13 +8142,14 @@ function resolveModelForCapability(provider, capability, modelIdOverride) {
8140
8142
  }
8141
8143
  return model;
8142
8144
  }
8143
- function buildOpenAiCompatibleModel(entry, id) {
8145
+ function buildOpenAiCompatibleModel(entry, id, suppressThinking = false) {
8144
8146
  const host = entry.openaiCompatible;
8145
8147
  if (!host) {
8146
8148
  throw new Error(`buildOpenAiCompatibleModel called for non-custom provider '${entry.piAiProvider}'`);
8147
8149
  }
8148
8150
  const meta = host.knownModels[id] ?? host.defaultModelMeta;
8149
8151
  const baseUrl = (host.baseUrlEnvVar ? process.env[host.baseUrlEnvVar] : void 0) || host.baseUrl;
8152
+ const compat = suppressThinking ? { ...host.compat, thinkingFormat: "qwen-chat-template" } : host.compat;
8150
8153
  return {
8151
8154
  id,
8152
8155
  name: id,
@@ -8158,7 +8161,7 @@ function buildOpenAiCompatibleModel(entry, id) {
8158
8161
  cost: meta.cost,
8159
8162
  contextWindow: meta.contextWindow,
8160
8163
  maxTokens: meta.maxTokens,
8161
- ...host.compat ? { compat: host.compat } : {}
8164
+ ...compat ? { compat } : {}
8162
8165
  };
8163
8166
  }
8164
8167
  function validateAgentProviderRegistry() {
@@ -3455,6 +3455,93 @@ var projectSearchResponseSchema = z24.object({
3455
3455
  truncated: z24.boolean(),
3456
3456
  hits: z24.array(projectSearchHitSchema)
3457
3457
  });
3458
+ var portfolioChangeTypeSchema = z24.enum([
3459
+ "citation-gained",
3460
+ "citation-lost",
3461
+ "mention-gained",
3462
+ "mention-lost",
3463
+ "run-failed",
3464
+ "insight-critical",
3465
+ "insight-high",
3466
+ "stale-visibility",
3467
+ "query-set-changed",
3468
+ "project-never-run"
3469
+ ]);
3470
+ var PortfolioChangeTypes = portfolioChangeTypeSchema.enum;
3471
+ var portfolioChangeSchema = z24.object({
3472
+ id: z24.string(),
3473
+ projectName: z24.string(),
3474
+ projectSlug: z24.string(),
3475
+ changeType: portfolioChangeTypeSchema,
3476
+ tone: metricToneSchema,
3477
+ title: z24.string(),
3478
+ detail: z24.string(),
3479
+ occurredAt: z24.string(),
3480
+ href: z24.string().nullable(),
3481
+ actionLabel: z24.string().nullable(),
3482
+ comparable: z24.boolean()
3483
+ });
3484
+ var portfolioRunSchema = z24.object({
3485
+ runId: z24.string(),
3486
+ projectName: z24.string(),
3487
+ projectSlug: z24.string(),
3488
+ kindLabel: z24.string(),
3489
+ status: runStatusSchema,
3490
+ createdAt: z24.string(),
3491
+ startedAt: z24.string().nullable(),
3492
+ finishedAt: z24.string().nullable(),
3493
+ durationMs: z24.number().nullable(),
3494
+ mentionedCount: z24.number().int().nonnegative().nullable(),
3495
+ citedCount: z24.number().int().nonnegative().nullable(),
3496
+ totalCount: z24.number().int().nonnegative().nullable(),
3497
+ errorSummary: z24.string().nullable()
3498
+ });
3499
+ var portfolioProjectRowSchema = z24.object({
3500
+ projectSlug: z24.string(),
3501
+ projectName: z24.string(),
3502
+ canonicalDomain: z24.string(),
3503
+ mentionScore: z24.number(),
3504
+ mentionTone: metricToneSchema,
3505
+ mentionedOfTotal: z24.object({
3506
+ mentioned: z24.number().int().nonnegative(),
3507
+ total: z24.number().int().nonnegative()
3508
+ }),
3509
+ citedOfTotal: z24.object({
3510
+ cited: z24.number().int().nonnegative(),
3511
+ total: z24.number().int().nonnegative()
3512
+ }),
3513
+ mentionDelta: z24.object({
3514
+ gained: z24.number().int().nonnegative(),
3515
+ lost: z24.number().int().nonnegative(),
3516
+ comparable: z24.boolean()
3517
+ }),
3518
+ citationDelta: z24.object({
3519
+ gained: z24.number().int().nonnegative(),
3520
+ lost: z24.number().int().nonnegative(),
3521
+ comparable: z24.boolean()
3522
+ }),
3523
+ competitorPressureLabel: z24.string(),
3524
+ mentionTrend: z24.array(z24.number()),
3525
+ lastRunAt: z24.string().nullable(),
3526
+ hasEverRun: z24.boolean()
3527
+ });
3528
+ var portfolioFeedEmptyStateSchema = z24.object({
3529
+ kind: z24.enum(["all-clear", "awaiting-second-sweep"]),
3530
+ title: z24.string(),
3531
+ detail: z24.string()
3532
+ });
3533
+ var portfolioDtoSchema = z24.object({
3534
+ generatedAt: z24.string(),
3535
+ lastSweepAt: z24.string().nullable(),
3536
+ projectCount: z24.number().int().nonnegative(),
3537
+ comparableProjectCount: z24.number().int().nonnegative(),
3538
+ firstSweepProjectCount: z24.number().int().nonnegative(),
3539
+ changeFeed: z24.array(portfolioChangeSchema),
3540
+ changeFeedTotal: z24.number().int().nonnegative(),
3541
+ feedEmptyState: portfolioFeedEmptyStateSchema.nullable(),
3542
+ recentRuns: z24.array(portfolioRunSchema),
3543
+ projects: z24.array(portfolioProjectRowSchema)
3544
+ });
3458
3545
 
3459
3546
  // ../contracts/src/content.ts
3460
3547
  import { z as z25 } from "zod";
@@ -5093,6 +5180,21 @@ function formatDateRange(start, end) {
5093
5180
  if (start && end) return `${formatDate(start)} \u2192 ${formatDate(end)}`;
5094
5181
  return formatDate(start || end);
5095
5182
  }
5183
+ function formatRelativeTime(fromIso, nowIso) {
5184
+ if (!fromIso) return "\u2014";
5185
+ const from = Date.parse(fromIso);
5186
+ const now = Date.parse(nowIso);
5187
+ if (Number.isNaN(from) || Number.isNaN(now)) return formatDate(fromIso);
5188
+ const diffMs = now - from;
5189
+ if (diffMs < 6e4) return "just now";
5190
+ const minutes = Math.floor(diffMs / 6e4);
5191
+ if (minutes < 60) return `${minutes}m ago`;
5192
+ const hours = Math.floor(minutes / 60);
5193
+ if (hours < 24) return `${hours}h ago`;
5194
+ const days = Math.floor(hours / 24);
5195
+ if (days <= 7) return `${days}d ago`;
5196
+ return formatDate(fromIso);
5197
+ }
5096
5198
  var DATE_ONLY_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
5097
5199
  function parseInclusiveEndMs(iso) {
5098
5200
  const ms = Date.parse(iso);
@@ -5580,6 +5682,8 @@ export {
5580
5682
  ccAvailableReleaseSchema,
5581
5683
  ccCachedReleaseSchema,
5582
5684
  projectOverviewDtoSchema,
5685
+ PortfolioChangeTypes,
5686
+ portfolioDtoSchema,
5583
5687
  ContentActions,
5584
5688
  contentActionLabel,
5585
5689
  actionConfidenceLabel,
@@ -5652,6 +5756,7 @@ export {
5652
5756
  formatDate,
5653
5757
  formatIsoDate,
5654
5758
  formatDateRange,
5759
+ formatRelativeTime,
5655
5760
  parseInclusiveEndMs,
5656
5761
  deltaPercent,
5657
5762
  deltaTone,