@canonry/canonry 4.133.2 → 4.133.3

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 (25) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +7 -0
  2. package/assets/assets/{AuditHistoryPanel-CVDg3GXg.js → AuditHistoryPanel-DTHQGvkW.js} +1 -1
  3. package/assets/assets/{BacklinksPage-Dh4RIvS7.js → BacklinksPage-DuPI3wt9.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-BK89G5H_.js → ChartPrimitives-T8mxOObc.js} +1 -1
  5. package/assets/assets/{HistoryPage-D8rMu_Js.js → HistoryPage-T1W40xKG.js} +1 -1
  6. package/assets/assets/{ProjectPage-CiTDveNK.js → ProjectPage-DYwM8-Rp.js} +1 -1
  7. package/assets/assets/{RunRow-DVOwbmTp.js → RunRow-nHr4wW9B.js} +1 -1
  8. package/assets/assets/{RunsPage-tz3Oil7N.js → RunsPage-Cbusy_84.js} +1 -1
  9. package/assets/assets/{SettingsPage-C698YidM.js → SettingsPage-BVcbl4gn.js} +1 -1
  10. package/assets/assets/{TrafficPage-XDXWMtey.js → TrafficPage-CZ4NTWI6.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-Clz8kOR8.js → TrafficSourceDetailPage-xW-KvZY1.js} +1 -1
  12. package/assets/assets/{arrow-left-GWLbh0pE.js → arrow-left-flskyFPK.js} +1 -1
  13. package/assets/assets/{extract-error-message-Dk8w-sb1.js → extract-error-message-BHfCTm0H.js} +1 -1
  14. package/assets/assets/{index-jTshRRh0.js → index-CQzGDGMB.js} +62 -62
  15. package/assets/assets/{trash-2-DwnzsuH1.js → trash-2-LGfqtSzZ.js} +1 -1
  16. package/assets/index.html +1 -1
  17. package/dist/{chunk-V2YR3YK6.js → chunk-6ON6GUAL.js} +9 -5
  18. package/dist/{chunk-JTJQZ4UC.js → chunk-A6BYMSZL.js} +29 -1
  19. package/dist/{chunk-IEZTETUZ.js → chunk-HENMGNLT.js} +292 -40
  20. package/dist/{chunk-ZPQX5ZQ2.js → chunk-YRRQFOAH.js} +92 -0
  21. package/dist/cli.js +45 -4
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-WZNE23TV.js → intelligence-service-OSLFG5S2.js} +2 -2
  24. package/dist/mcp.js +2 -2
  25. package/package.json +8 -8
@@ -6742,6 +6742,91 @@ var adsSummaryDtoSchema = z38.object({
6742
6742
  /** Campaign-level rollup totals over the window (levels are not summed across). */
6743
6743
  totals: adsTotalsDtoSchema
6744
6744
  });
6745
+ var adsDeliverySnapshotStatusSchema = z38.enum(["unavailable", "partial", "complete"]);
6746
+ var AdsDeliverySnapshotStatuses = adsDeliverySnapshotStatusSchema.enum;
6747
+ var adsDeliverySnapshotIssueSchema = z38.enum([
6748
+ "no_ads_connection",
6749
+ "connection_not_synced",
6750
+ "no_ads_sync",
6751
+ "entity_rows_missing_sync_run_id",
6752
+ "entity_rows_span_multiple_sync_runs",
6753
+ "source_sync_missing",
6754
+ "source_sync_not_ads_sync",
6755
+ "source_sync_not_completed"
6756
+ ]);
6757
+ var AdsDeliverySnapshotIssues = adsDeliverySnapshotIssueSchema.enum;
6758
+ var adsHistoricalCampaignRollupStatusSchema = z38.enum(["unavailable", "reported"]);
6759
+ var AdsHistoricalCampaignRollupStatuses = adsHistoricalCampaignRollupStatusSchema.enum;
6760
+ var AdsDeliveryConfigurationBases = {
6761
+ storedSnapshot: "stored_ads_snapshot"
6762
+ };
6763
+ var adsActivityAssessmentStateSchema = z38.enum([
6764
+ "unavailable",
6765
+ "partial_snapshot",
6766
+ "metrics_unavailable",
6767
+ "observed_activity",
6768
+ "no_observed_activity"
6769
+ ]);
6770
+ var AdsActivityAssessmentStates = adsActivityAssessmentStateSchema.enum;
6771
+ var adsDeliveryDiagnosticsAdSchema = z38.object({
6772
+ id: z38.string(),
6773
+ name: z38.string(),
6774
+ status: z38.string(),
6775
+ reviewStatus: z38.string().nullable()
6776
+ });
6777
+ var adsDeliveryDiagnosticsAdGroupSchema = z38.object({
6778
+ id: z38.string(),
6779
+ name: z38.string(),
6780
+ status: z38.string(),
6781
+ billingEventType: z38.union([adsAdGroupBillingEventTypeSchema, z38.null()]),
6782
+ maxBidMicros: z38.number().int().nullable(),
6783
+ contextHints: z38.array(z38.string()),
6784
+ ads: z38.array(adsDeliveryDiagnosticsAdSchema)
6785
+ });
6786
+ var adsDeliveryDiagnosticsCampaignSchema = z38.object({
6787
+ id: z38.string(),
6788
+ name: z38.string(),
6789
+ status: z38.string(),
6790
+ biddingType: z38.union([adsCampaignBiddingTypeSchema, z38.null()]),
6791
+ dailySpendLimitMicros: z38.number().int().nullable(),
6792
+ lifetimeSpendLimitMicros: z38.number().int().nullable(),
6793
+ conversionEventSettingIds: z38.array(z38.string()),
6794
+ adGroups: z38.array(adsDeliveryDiagnosticsAdGroupSchema)
6795
+ });
6796
+ var adsDeliveryDiagnosticsDtoSchema = z38.object({
6797
+ snapshot: z38.object({
6798
+ status: adsDeliverySnapshotStatusSchema,
6799
+ // A union keeps the OpenAPI form explicit enough for the generated SDK to
6800
+ // retain the complete-snapshot `null` value (rather than narrowing it to
6801
+ // the issue enum alone).
6802
+ issue: z38.union([adsDeliverySnapshotIssueSchema, z38.null()]),
6803
+ lastSyncedAt: z38.string().nullable(),
6804
+ campaignCount: z38.number().int().nonnegative(),
6805
+ adGroupCount: z38.number().int().nonnegative(),
6806
+ adCount: z38.number().int().nonnegative(),
6807
+ sourceSync: z38.object({
6808
+ runId: z38.string(),
6809
+ status: runStatusSchema
6810
+ }).nullable()
6811
+ }),
6812
+ historicalCampaignRollups: z38.object({
6813
+ status: adsHistoricalCampaignRollupStatusSchema,
6814
+ window: z38.object({ from: z38.string().nullable(), to: z38.string().nullable() }),
6815
+ totals: adsTotalsDtoSchema.nullable()
6816
+ }),
6817
+ storedConfiguration: z38.object({
6818
+ basis: z38.literal(AdsDeliveryConfigurationBases.storedSnapshot),
6819
+ connection: z38.object({
6820
+ status: z38.string().nullable(),
6821
+ reviewStatus: z38.string().nullable(),
6822
+ integrityReviewStatus: z38.string().nullable(),
6823
+ integrityDecision: z38.string().nullable(),
6824
+ conversionTrackingConfigured: z38.boolean()
6825
+ }).nullable(),
6826
+ campaigns: z38.array(adsDeliveryDiagnosticsCampaignSchema)
6827
+ }),
6828
+ assessment: z38.object({ state: adsActivityAssessmentStateSchema })
6829
+ });
6745
6830
  var adsOperationKeySchema = z38.string().min(8).max(128).regex(/^[\w.:-]+$/, "operationKey may contain letters, numbers, dot, underscore, colon, and hyphen");
6746
6831
  var adsEntityIdSchema = z38.string().min(1).max(200);
6747
6832
  var adsNameSchema = z38.string().min(3).max(1e3).refine((value) => value.trim().length > 0);
@@ -7776,8 +7861,15 @@ export {
7776
7861
  AdsAdGroupBillingEventTypes,
7777
7862
  adsCampaignListResponseSchema,
7778
7863
  adsInsightLevelSchema,
7864
+ AdsInsightLevels,
7779
7865
  adsInsightsResponseSchema,
7780
7866
  adsSummaryDtoSchema,
7867
+ AdsDeliverySnapshotStatuses,
7868
+ AdsDeliverySnapshotIssues,
7869
+ AdsHistoricalCampaignRollupStatuses,
7870
+ AdsDeliveryConfigurationBases,
7871
+ AdsActivityAssessmentStates,
7872
+ adsDeliveryDiagnosticsDtoSchema,
7781
7873
  AdsOperationKinds,
7782
7874
  AdsOperationStates,
7783
7875
  AdsReconcileStrategies,
package/dist/cli.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  setTelemetrySource,
30
30
  showFirstRunNotice,
31
31
  trackEvent
32
- } from "./chunk-V2YR3YK6.js";
32
+ } from "./chunk-6ON6GUAL.js";
33
33
  import {
34
34
  CliError,
35
35
  EXIT_SYSTEM_ERROR,
@@ -46,7 +46,7 @@ import {
46
46
  saveConfig,
47
47
  saveConfigPatch,
48
48
  usageError
49
- } from "./chunk-JTJQZ4UC.js";
49
+ } from "./chunk-A6BYMSZL.js";
50
50
  import {
51
51
  apiKeys,
52
52
  createClient,
@@ -54,8 +54,10 @@ import {
54
54
  projects,
55
55
  queries,
56
56
  renderReportHtml
57
- } from "./chunk-IEZTETUZ.js";
57
+ } from "./chunk-HENMGNLT.js";
58
58
  import {
59
+ AdsDeliverySnapshotStatuses,
60
+ AdsHistoricalCampaignRollupStatuses,
59
61
  AdsOperationKinds,
60
62
  AdsOperationStates,
61
63
  AdsOperationStepStates,
@@ -97,7 +99,7 @@ import {
97
99
  providerQuotaPolicySchema,
98
100
  resolveProviderInput,
99
101
  winnabilityClassSchema
100
- } from "./chunk-ZPQX5ZQ2.js";
102
+ } from "./chunk-YRRQFOAH.js";
101
103
 
102
104
  // src/cli.ts
103
105
  import { pathToFileURL } from "url";
@@ -3381,6 +3383,37 @@ async function adsSummary(project, opts) {
3381
3383
  console.log(`Spend: ${formatMicros(result.totals.spendMicros, result.currencyCode ?? "USD")}${result.totals.cpcMicros != null ? ` (CPC ${formatMicros(result.totals.cpcMicros, result.currencyCode ?? "USD")})` : ""}`);
3382
3384
  console.log(`Last synced: ${result.lastSyncedAt ?? "never"}`);
3383
3385
  }
3386
+ async function adsDeliveryDiagnostics(project, opts) {
3387
+ const result = await getClient6().getAdsDeliveryDiagnostics(project);
3388
+ if (isMachineFormat(opts?.format)) {
3389
+ console.log(JSON.stringify(result, null, 2));
3390
+ return;
3391
+ }
3392
+ console.log(`Snapshot: ${result.snapshot.status}${result.snapshot.issue ? ` (${result.snapshot.issue})` : ""}`);
3393
+ console.log(`Source sync: ${result.snapshot.sourceSync ? `${result.snapshot.sourceSync.runId} [${result.snapshot.sourceSync.status}]` : "none"}`);
3394
+ console.log(`Structure: ${result.snapshot.campaignCount} campaigns / ${result.snapshot.adGroupCount} ad groups / ${result.snapshot.adCount} ads`);
3395
+ console.log(`Last synced: ${result.snapshot.lastSyncedAt ?? "never"}`);
3396
+ console.log(`Activity: ${result.assessment.state}`);
3397
+ if (result.historicalCampaignRollups.status === AdsHistoricalCampaignRollupStatuses.reported && result.historicalCampaignRollups.totals !== null) {
3398
+ console.log(`Historical: ${result.historicalCampaignRollups.totals.impressions} impressions / ${result.historicalCampaignRollups.totals.clicks} clicks (${result.historicalCampaignRollups.window.from} \u2192 ${result.historicalCampaignRollups.window.to})`);
3399
+ } else {
3400
+ console.log("Historical: no stored campaign rollups");
3401
+ }
3402
+ console.log("Evidence: stored snapshot and historical rollups only; not an OpenAI eligibility or serving verdict.");
3403
+ if (result.snapshot.status !== AdsDeliverySnapshotStatuses.complete) {
3404
+ console.log("Structure details suppressed until a complete trusted snapshot exists.");
3405
+ return;
3406
+ }
3407
+ for (const campaign of result.storedConfiguration.campaigns) {
3408
+ const budget = campaign.dailySpendLimitMicros !== null ? `${formatMicros(campaign.dailySpendLimitMicros)}/day` : campaign.lifetimeSpendLimitMicros !== null ? `${formatMicros(campaign.lifetimeSpendLimitMicros)} lifetime` : "no stored budget";
3409
+ console.log(`${campaign.name} [${campaign.status}] \u2014 ${campaign.biddingType ?? "unknown bidding"}, ${budget}, ${campaign.conversionEventSettingIds.length} conversion settings`);
3410
+ for (const group of campaign.adGroups) {
3411
+ const bid = group.maxBidMicros === null ? "no stored max bid" : `max bid ${formatMicros(group.maxBidMicros)}`;
3412
+ console.log(` - ${group.name} [${group.status}] \u2014 ${group.billingEventType ?? "unknown billing"}, ${bid}, ${group.contextHints.length} context hints`);
3413
+ for (const ad of group.ads) console.log(` ${ad.name} [${ad.status}] review=${ad.reviewStatus ?? "unknown"}`);
3414
+ }
3415
+ }
3416
+ }
3384
3417
 
3385
3418
  // src/cli-commands/ads.ts
3386
3419
  var ADS_CLI_COMMANDS = [
@@ -3736,6 +3769,14 @@ Usage: ${usage}`, {
3736
3769
  const project = requireProject(input, "ads.summary", "canonry ads summary <project> [--format json]");
3737
3770
  await adsSummary(project, { format: input.format });
3738
3771
  }
3772
+ },
3773
+ {
3774
+ path: ["ads", "delivery-diagnostics"],
3775
+ usage: "canonry ads delivery-diagnostics <project> [--format json]",
3776
+ run: async (input) => {
3777
+ const project = requireProject(input, "ads.delivery-diagnostics", "canonry ads delivery-diagnostics <project> [--format json]");
3778
+ await adsDeliveryDiagnostics(project, { format: input.format });
3779
+ }
3739
3780
  }
3740
3781
  ];
3741
3782
 
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-V2YR3YK6.js";
3
+ } from "./chunk-6ON6GUAL.js";
4
4
  import {
5
5
  loadConfig
6
- } from "./chunk-JTJQZ4UC.js";
7
- import "./chunk-IEZTETUZ.js";
8
- import "./chunk-ZPQX5ZQ2.js";
6
+ } from "./chunk-A6BYMSZL.js";
7
+ import "./chunk-HENMGNLT.js";
8
+ import "./chunk-YRRQFOAH.js";
9
9
  export {
10
10
  createServer,
11
11
  loadConfig
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  IntelligenceService
3
- } from "./chunk-IEZTETUZ.js";
4
- import "./chunk-ZPQX5ZQ2.js";
3
+ } from "./chunk-HENMGNLT.js";
4
+ import "./chunk-YRRQFOAH.js";
5
5
  export {
6
6
  IntelligenceService
7
7
  };
package/dist/mcp.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  PACKAGE_VERSION,
4
4
  canonryMcpTools,
5
5
  createApiClient
6
- } from "./chunk-JTJQZ4UC.js";
6
+ } from "./chunk-A6BYMSZL.js";
7
7
  import {
8
8
  isReadOnlyKey
9
- } from "./chunk-ZPQX5ZQ2.js";
9
+ } from "./chunk-YRRQFOAH.js";
10
10
 
11
11
  // src/mcp/cli.ts
12
12
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonry/canonry",
3
- "version": "4.133.2",
3
+ "version": "4.133.3",
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",
@@ -72,20 +72,20 @@
72
72
  "@ainyc/canonry-db": "0.0.0",
73
73
  "@ainyc/canonry-integration-bing": "0.0.0",
74
74
  "@ainyc/canonry-integration-openai-ads": "0.0.0",
75
+ "@ainyc/canonry-integration-cloud-run": "0.0.0",
75
76
  "@ainyc/canonry-integration-commoncrawl": "0.0.0",
76
77
  "@ainyc/canonry-integration-google": "0.0.0",
77
- "@ainyc/canonry-integration-google-business-profile": "0.0.0",
78
- "@ainyc/canonry-integration-cloud-run": "0.0.0",
79
78
  "@ainyc/canonry-integration-google-places": "0.0.0",
80
- "@ainyc/canonry-integration-wordpress": "0.0.0",
79
+ "@ainyc/canonry-integration-google-business-profile": "0.0.0",
81
80
  "@ainyc/canonry-integration-traffic": "0.0.0",
82
- "@ainyc/canonry-provider-cdp": "0.0.0",
81
+ "@ainyc/canonry-integration-wordpress": "0.0.0",
83
82
  "@ainyc/canonry-intelligence": "0.0.0",
84
- "@ainyc/canonry-provider-claude": "0.0.0",
85
- "@ainyc/canonry-provider-gemini": "0.0.0",
83
+ "@ainyc/canonry-provider-cdp": "0.0.0",
86
84
  "@ainyc/canonry-provider-local": "0.0.0",
87
85
  "@ainyc/canonry-provider-perplexity": "0.0.0",
88
- "@ainyc/canonry-provider-openai": "0.0.0"
86
+ "@ainyc/canonry-provider-openai": "0.0.0",
87
+ "@ainyc/canonry-provider-claude": "0.0.0",
88
+ "@ainyc/canonry-provider-gemini": "0.0.0"
89
89
  },
90
90
  "scripts": {
91
91
  "build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",