@ainyc/canonry 4.99.0 → 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 (27) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +13 -1
  2. package/assets/assets/{BacklinksPage-CuWs7I1D.js → BacklinksPage-DWZdWEm3.js} +1 -1
  3. package/assets/assets/{ChartPrimitives-bm37tprp.js → ChartPrimitives-C-ky5206.js} +1 -1
  4. package/assets/assets/ProjectPage-CpbFpi6J.js +6 -0
  5. package/assets/assets/{RunRow-DzhQl87g.js → RunRow-Bj-D4kZe.js} +1 -1
  6. package/assets/assets/{RunsPage-wOaewhbF.js → RunsPage-GktitsAV.js} +1 -1
  7. package/assets/assets/{SettingsPage-CJdhhkkE.js → SettingsPage-AsFLFDS3.js} +1 -1
  8. package/assets/assets/{TrafficPage-BJBeN5Ph.js → TrafficPage-Cf3uCkxs.js} +1 -1
  9. package/assets/assets/{TrafficSourceDetailPage-D3PmH0B1.js → TrafficSourceDetailPage-B5t7nf9C.js} +1 -1
  10. package/assets/assets/{arrow-left-BmITMI6O.js → arrow-left-CZFQuQO_.js} +1 -1
  11. package/assets/assets/{extract-error-message-BGwnyAfP.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-Bd2mkP_w.js → trash-2-sKO0k75f.js} +1 -1
  15. package/assets/index.html +2 -2
  16. package/dist/{chunk-CEHD33NQ.js → chunk-74SOIAIY.js} +262 -119
  17. package/dist/{chunk-CWFTMFEU.js → chunk-ADLS64PG.js} +117 -3
  18. package/dist/{chunk-DJVUNURL.js → chunk-SNHYRSUF.js} +401 -40
  19. package/dist/{chunk-VQN74WWA.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-QHBXW4KI.js → intelligence-service-3CRNJLUZ.js} +2 -2
  23. package/dist/mcp.js +2 -2
  24. package/package.json +10 -10
  25. package/assets/assets/ProjectPage-BksYe8FP.js +0 -6
  26. package/assets/assets/index-BSX6r6ju.js +0 -210
  27. package/assets/assets/index-BsZNCwg8.css +0 -1
@@ -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";
@@ -3998,12 +4085,15 @@ var citationScorecardSchema = z28.object({
3998
4085
  providers: z28.array(z28.string()),
3999
4086
  /** matrix[queryIndex][providerIndex] — null when no snapshot exists for the pair. */
4000
4087
  matrix: z28.array(z28.array(citationCellSchema.nullable())),
4001
- /** Per-provider citation rate (0..100). */
4088
+ /** Per-provider citation + mention rates (0..100). */
4002
4089
  providerRates: z28.array(z28.object({
4003
4090
  provider: z28.string(),
4004
4091
  citedCount: z28.number(),
4092
+ /** Number of snapshots for this provider where the answer text mentioned the project. */
4093
+ mentionedCount: z28.number(),
4005
4094
  totalCount: z28.number(),
4006
- citationRate: z28.number()
4095
+ citationRate: z28.number(),
4096
+ mentionRate: z28.number()
4007
4097
  }))
4008
4098
  });
4009
4099
  var competitorRowSchema = z28.object({
@@ -4274,7 +4364,11 @@ var citationsTrendPointSchema = z28.object({
4274
4364
  * within that provider (`cited / scanned`), so it remains comparable
4275
4365
  * between providers in the same run.
4276
4366
  */
4277
- providerRates: z28.array(z28.object({ provider: z28.string(), citationRate: z28.number() }))
4367
+ providerRates: z28.array(z28.object({
4368
+ provider: z28.string(),
4369
+ citationRate: z28.number(),
4370
+ mentionRate: z28.number()
4371
+ }))
4278
4372
  });
4279
4373
  var reportInsightSchema = z28.object({
4280
4374
  id: z28.string(),
@@ -4356,6 +4450,8 @@ var whatsChangedSectionSchema = z28.object({
4356
4450
  mentionRate: reportRateDeltaSchema.nullable(),
4357
4451
  /** Cited query count delta vs the prior completed run. Null when no prior run. */
4358
4452
  citedQueryCount: reportRateDeltaSchema.nullable(),
4453
+ /** Mentioned query count delta vs the prior completed run. Null when no prior run. */
4454
+ mentionedQueryCount: reportRateDeltaSchema.nullable(),
4359
4455
  /**
4360
4456
  * GSC clicks delta — the most recent `comparisonWindowDays` of `gsc.trend`
4361
4457
  * vs the `comparisonWindowDays` before that. Null when GSC isn't connected
@@ -5084,6 +5180,21 @@ function formatDateRange(start, end) {
5084
5180
  if (start && end) return `${formatDate(start)} \u2192 ${formatDate(end)}`;
5085
5181
  return formatDate(start || end);
5086
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
+ }
5087
5198
  var DATE_ONLY_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
5088
5199
  function parseInclusiveEndMs(iso) {
5089
5200
  const ms = Date.parse(iso);
@@ -5571,6 +5682,8 @@ export {
5571
5682
  ccAvailableReleaseSchema,
5572
5683
  ccCachedReleaseSchema,
5573
5684
  projectOverviewDtoSchema,
5685
+ PortfolioChangeTypes,
5686
+ portfolioDtoSchema,
5574
5687
  ContentActions,
5575
5688
  contentActionLabel,
5576
5689
  actionConfidenceLabel,
@@ -5643,6 +5756,7 @@ export {
5643
5756
  formatDate,
5644
5757
  formatIsoDate,
5645
5758
  formatDateRange,
5759
+ formatRelativeTime,
5646
5760
  parseInclusiveEndMs,
5647
5761
  deltaPercent,
5648
5762
  deltaTone,