@ainyc/canonry 4.76.0 → 4.76.2

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 (23) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
  2. package/assets/assets/{BacklinksPage-Dvc3mk9A.js → BacklinksPage-GkTp8zLM.js} +1 -1
  3. package/assets/assets/{ChartPrimitives-DbjEIcrG.js → ChartPrimitives-0noLg9_T.js} +1 -1
  4. package/assets/assets/{ProjectPage-CeZYtdbm.js → ProjectPage-Bg5sKYhO.js} +2 -2
  5. package/assets/assets/{RunRow-CgojRiy8.js → RunRow-BEhaQDol.js} +1 -1
  6. package/assets/assets/{RunsPage-CWEcQv7p.js → RunsPage-CV2wKkaz.js} +1 -1
  7. package/assets/assets/{SettingsPage-CCT4jasH.js → SettingsPage-Ctij-T9F.js} +1 -1
  8. package/assets/assets/{TrafficPage-DtdlxDFZ.js → TrafficPage-TnIPaMcL.js} +1 -1
  9. package/assets/assets/{TrafficSourceDetailPage-CPBuL-HQ.js → TrafficSourceDetailPage-BBmIwaee.js} +1 -1
  10. package/assets/assets/{extract-error-message--ubvhQzu.js → extract-error-message-BdLppivS.js} +1 -1
  11. package/assets/assets/{index-CKbfZ6rA.js → index-B-_Dwwhd.js} +3 -3
  12. package/assets/assets/{server-traffic-Dskh-6z1.js → server-traffic-ScU00kCP.js} +1 -1
  13. package/assets/assets/{trash-2-b62WCytM.js → trash-2-C65kNIO5.js} +1 -1
  14. package/assets/index.html +1 -1
  15. package/dist/{chunk-WFMEK34V.js → chunk-42TDEKKM.js} +1 -1
  16. package/dist/{chunk-JUWU2DV6.js → chunk-BIT3JPMW.js} +42 -8
  17. package/dist/{chunk-JNAKRK77.js → chunk-ETM5EPQH.js} +18 -0
  18. package/dist/{chunk-QY5WZWU4.js → chunk-ZUQK4TLL.js} +4 -4
  19. package/dist/cli.js +9 -8
  20. package/dist/index.js +4 -4
  21. package/dist/{intelligence-service-L2A5MFB4.js → intelligence-service-QIGX7IVQ.js} +2 -2
  22. package/dist/mcp.js +2 -2
  23. package/package.json +10 -10
@@ -22,7 +22,7 @@ import {
22
22
  trafficConnectVercelRequestSchema,
23
23
  trafficConnectWordpressRequestSchema,
24
24
  trafficEventKindSchema
25
- } from "./chunk-JNAKRK77.js";
25
+ } from "./chunk-ETM5EPQH.js";
26
26
 
27
27
  // src/config.ts
28
28
  import fs from "fs";
@@ -11,6 +11,7 @@ import {
11
11
  ContentActions,
12
12
  DEFAULT_DISCOVERY_PROMOTE_BUCKETS,
13
13
  DEFAULT_DISCOVERY_PROMOTE_COMPETITOR_TYPES,
14
+ DISCOVERY_DEFAULT_DEDUP_THRESHOLD,
14
15
  DISCOVERY_PROMOTE_COMPETITOR_CAP,
15
16
  DISCOVERY_PROMOTE_COMPETITOR_MIN_HITS,
16
17
  DiscoveryBuckets,
@@ -186,6 +187,7 @@ import {
186
187
  schedulableRunKindSchema,
187
188
  scheduleDtoSchema,
188
189
  scheduleUpsertRequestSchema,
190
+ seedCollapseWarning,
189
191
  serializeRunError,
190
192
  settingsDtoSchema,
191
193
  siteAuditPagesResponseSchema,
@@ -230,7 +232,7 @@ import {
230
232
  wordpressSchemaDeployResultDtoSchema,
231
233
  wordpressSchemaStatusResultDtoSchema,
232
234
  wordpressStatusDtoSchema
233
- } from "./chunk-JNAKRK77.js";
235
+ } from "./chunk-ETM5EPQH.js";
234
236
 
235
237
  // src/intelligence-service.ts
236
238
  import { eq as eq33, desc as desc17, asc as asc4, and as and24, ne as ne5, or as or5, inArray as inArray12, gte as gte6, lte as lte3 } from "drizzle-orm";
@@ -1014,6 +1016,7 @@ var discoverySessions = sqliteTable("discovery_sessions", {
1014
1016
  aspirationalCount: integer("aspirational_count"),
1015
1017
  wastedCount: integer("wasted_count"),
1016
1018
  competitorMap: text("competitor_map", { mode: "json" }).$type().notNull().default([]),
1019
+ warning: text("warning"),
1017
1020
  error: text("error"),
1018
1021
  startedAt: text("started_at"),
1019
1022
  finishedAt: text("finished_at"),
@@ -2863,6 +2866,16 @@ var MIGRATION_VERSIONS = [
2863
2866
  `CREATE INDEX IF NOT EXISTS idx_site_audit_pages_run ON site_audit_pages(run_id)`,
2864
2867
  `CREATE INDEX IF NOT EXISTS idx_site_audit_pages_project_score ON site_audit_pages(project_id, overall_score)`
2865
2868
  ]
2869
+ },
2870
+ {
2871
+ // Non-fatal operator warning on a discovery session (e.g. the seed-dedup
2872
+ // degenerate-collapse guard). The session still completes; the warning
2873
+ // flags that its coverage may be misleading.
2874
+ version: 76,
2875
+ name: "discovery-session-warning",
2876
+ statements: [
2877
+ `ALTER TABLE discovery_sessions ADD COLUMN warning TEXT`
2878
+ ]
2866
2879
  }
2867
2880
  ];
2868
2881
  function isDuplicateColumnError(err) {
@@ -16652,7 +16665,7 @@ var routeCatalog = [
16652
16665
  method: "post",
16653
16666
  path: "/api/v1/projects/{name}/discover/run",
16654
16667
  summary: "Start a tracked-basket discovery session",
16655
- description: 'Kicks off a discovery session for the project. The pipeline: ICP description \u2192 Gemini grounded seed prompt \u2192 embed + cluster (cosine \u2265 0.85 by default) \u2192 pick canonical representatives \u2192 probe each canonical via Gemini grounding \u2192 classify into cited / aspirational / wasted-surface \u2192 aggregate competitor map. Returns immediately with `{ runId, sessionId, status: "running", consolidated }`; the actual work runs in the background. Poll `GET /projects/{name}/discover/sessions/{id}` until `status` is `completed` or `failed`. Concurrent/duplicate requests for the same (project, ICP) are consolidated onto a single in-flight session: the response carries `consolidated: true` and `200 OK` instead of `201`, and the request\'s `dedupThreshold` / `maxProbes` are ignored (the in-flight session keeps its original config).',
16668
+ description: 'Kicks off a discovery session for the project. The pipeline: ICP description \u2192 Gemini grounded seed prompt \u2192 embed + cluster (cosine \u2265 0.95 by default) \u2192 pick canonical representatives \u2192 probe each canonical via Gemini grounding \u2192 classify into cited / aspirational / wasted-surface \u2192 aggregate competitor map. Returns immediately with `{ runId, sessionId, status: "running", consolidated }`; the actual work runs in the background. Poll `GET /projects/{name}/discover/sessions/{id}` until `status` is `completed` or `failed`. Concurrent/duplicate requests for the same (project, ICP) are consolidated onto a single in-flight session: the response carries `consolidated: true` and `200 OK` instead of `201`, and the request\'s `dedupThreshold` / `maxProbes` are ignored (the in-flight session keeps its original config).',
16656
16669
  tags: ["discovery"],
16657
16670
  parameters: [nameParameter],
16658
16671
  requestBody: {
@@ -16663,7 +16676,7 @@ var routeCatalog = [
16663
16676
  type: "object",
16664
16677
  properties: {
16665
16678
  icpDescription: { type: "string", description: "Free-text ICP. Required if the project does not have spec.icpDescription stored." },
16666
- dedupThreshold: { type: "number", description: "Cosine similarity threshold for clustering. Defaults to 0.85." },
16679
+ dedupThreshold: { type: "number", description: "Cosine similarity threshold for clustering. Defaults to 0.95." },
16667
16680
  maxProbes: { type: "integer", description: "Max canonical queries to probe in this session. Default 100, hard cap 500." },
16668
16681
  locations: {
16669
16682
  type: "array",
@@ -27904,7 +27917,7 @@ async function drainVercelTrafficEvents(options) {
27904
27917
  const events = [];
27905
27918
  const seenEventIds = /* @__PURE__ */ new Set();
27906
27919
  if (endMs <= startMs) {
27907
- return { events, subWindowCount: 0, effectiveStartMs: startMs, retentionClamped: false, truncatedSliceCount: 0, truncatedSliceStartsMs: [], drainedThroughMs: startMs, deadlineReached: false };
27920
+ return { events, subWindowCount: 0, effectiveStartMs: startMs, retentionClamped: false, truncatedSliceCount: 0, truncatedSliceStartsMs: [], deadlineSkippedSliceCount: 0, deadlineSkippedSliceStartsMs: [], drainedThroughMs: startMs, deadlineReached: false };
27908
27921
  }
27909
27922
  let cursorMs = startMs;
27910
27923
  let spanMs = Math.min(endMs - startMs, INITIAL_SUB_WINDOW_MS);
@@ -27917,9 +27930,14 @@ async function drainVercelTrafficEvents(options) {
27917
27930
  let truncatedSliceCount = 0;
27918
27931
  let deadlineReached = false;
27919
27932
  const truncatedSliceStartsMs = [];
27933
+ const deadlineSkippedSliceStartsMs = [];
27920
27934
  while (cursorMs < endMs) {
27921
27935
  if (options.deadlineMs !== void 0 && now() >= options.deadlineMs) {
27922
27936
  deadlineReached = true;
27937
+ if (cursorMs === effectiveStartMs && subWindowCount > 0 && cursorMs < endMs) {
27938
+ deadlineSkippedSliceStartsMs.push(cursorMs);
27939
+ cursorMs = Math.min(effectiveStartMs + INITIAL_SUB_WINDOW_MS, endMs);
27940
+ }
27923
27941
  break;
27924
27942
  }
27925
27943
  if (subWindowCount >= options.maxSubWindows) {
@@ -28008,7 +28026,7 @@ async function drainVercelTrafficEvents(options) {
28008
28026
  }
28009
28027
  }
28010
28028
  }
28011
- return { events, subWindowCount, effectiveStartMs, retentionClamped, truncatedSliceCount, truncatedSliceStartsMs, drainedThroughMs: cursorMs, deadlineReached };
28029
+ return { events, subWindowCount, effectiveStartMs, retentionClamped, truncatedSliceCount, truncatedSliceStartsMs, deadlineSkippedSliceCount: deadlineSkippedSliceStartsMs.length, deadlineSkippedSliceStartsMs, drainedThroughMs: cursorMs, deadlineReached };
28012
28030
  }
28013
28031
 
28014
28032
  // ../api-routes/src/traffic.ts
@@ -28805,6 +28823,16 @@ async function trafficRoutes(app, opts) {
28805
28823
  "Vercel drain truncated dense one-second slice(s); ingested a sample and advanced past them"
28806
28824
  );
28807
28825
  }
28826
+ if (drained.deadlineSkippedSliceCount > 0) {
28827
+ request.log.warn(
28828
+ {
28829
+ sourceId: sourceRow.id,
28830
+ skippedSlices: drained.deadlineSkippedSliceCount,
28831
+ sliceStarts: drained.deadlineSkippedSliceStartsMs.map((ms) => new Date(ms).toISOString())
28832
+ },
28833
+ "Vercel drain could not narrow a dense/slow head slice within its budget; skipped past it to guarantee progress"
28834
+ );
28835
+ }
28808
28836
  allEvents = drained.events;
28809
28837
  } catch (e) {
28810
28838
  const msg = e instanceof Error ? e.message : String(e);
@@ -31640,6 +31668,7 @@ function serializeSession(row) {
31640
31668
  aspirationalCount: row.aspirationalCount ?? null,
31641
31669
  wastedCount: row.wastedCount ?? null,
31642
31670
  competitorMap: parseCompetitorMap(row.competitorMap),
31671
+ warning: row.warning ?? null,
31643
31672
  error: row.error ?? null,
31644
31673
  startedAt: row.startedAt ?? null,
31645
31674
  finishedAt: row.finishedAt ?? null,
@@ -31675,7 +31704,6 @@ function selectEligibleCompetitors(competitorMap, competitorTypes) {
31675
31704
  // ../api-routes/src/discovery/orchestrate.ts
31676
31705
  import crypto26 from "crypto";
31677
31706
  import { eq as eq31 } from "drizzle-orm";
31678
- var DEFAULT_DEDUP_THRESHOLD = 0.85;
31679
31707
  var DEFAULT_MAX_PROBES = 100;
31680
31708
  var ABSOLUTE_MAX_PROBES = 500;
31681
31709
  function classifyProbeBucket(input) {
@@ -31721,7 +31749,7 @@ async function pickCanonicals(candidates, deps, dedupThreshold) {
31721
31749
  return clusters.map(pickClusterRepresentative);
31722
31750
  }
31723
31751
  async function executeDiscovery(opts) {
31724
- const dedupThreshold = opts.dedupThreshold ?? DEFAULT_DEDUP_THRESHOLD;
31752
+ const dedupThreshold = opts.dedupThreshold ?? DISCOVERY_DEFAULT_DEDUP_THRESHOLD;
31725
31753
  const requestedMax = opts.maxProbes ?? DEFAULT_MAX_PROBES;
31726
31754
  const maxProbes = Math.min(Math.max(1, requestedMax), ABSOLUTE_MAX_PROBES);
31727
31755
  const startedAt = (/* @__PURE__ */ new Date()).toISOString();
@@ -31742,13 +31770,19 @@ async function executeDiscovery(opts) {
31742
31770
  { embed: opts.deps.embed },
31743
31771
  dedupThreshold
31744
31772
  );
31773
+ const warning = seedCollapseWarning({
31774
+ seedCountRaw,
31775
+ canonicalCount: canonicals.length,
31776
+ dedupThreshold
31777
+ });
31745
31778
  const probedCanonicals = canonicals.slice(0, maxProbes);
31746
31779
  const seedCount = probedCanonicals.length;
31747
31780
  opts.db.update(discoverySessions).set({
31748
31781
  status: DiscoverySessionStatuses.probing,
31749
31782
  seedProvider: seedResult.provider,
31750
31783
  seedCountRaw,
31751
- seedCount
31784
+ seedCount,
31785
+ warning
31752
31786
  }).where(eq31(discoverySessions.id, opts.sessionId)).run();
31753
31787
  const probeRows = [];
31754
31788
  const buckets = { cited: 0, aspirational: 0, "wasted-surface": 0 };
@@ -1870,6 +1870,12 @@ var discoverySessionDtoSchema = z17.object({
1870
1870
  aspirationalCount: z17.number().int().nullable().default(null),
1871
1871
  wastedCount: z17.number().int().nullable().default(null),
1872
1872
  competitorMap: z17.array(discoveryCompetitorMapEntrySchema).default([]),
1873
+ /**
1874
+ * Non-fatal operator warning recorded while the session ran (currently the
1875
+ * seed dedup collapse guard). The session still completes; the warning flags
1876
+ * that its coverage may be misleading.
1877
+ */
1878
+ warning: z17.string().nullable().optional(),
1873
1879
  error: z17.string().nullable().optional(),
1874
1880
  startedAt: z17.string().nullable().optional(),
1875
1881
  finishedAt: z17.string().nullable().optional(),
@@ -1879,6 +1885,16 @@ var discoverySessionDetailDtoSchema = discoverySessionDtoSchema.extend({
1879
1885
  probes: z17.array(discoveryProbeDtoSchema).default([])
1880
1886
  });
1881
1887
  var DISCOVERY_MAX_PROBES_CAP = 500;
1888
+ var DISCOVERY_DEFAULT_DEDUP_THRESHOLD = 0.95;
1889
+ var DISCOVERY_SEED_COLLAPSE_RATIO = 0.2;
1890
+ var DISCOVERY_SEED_COLLAPSE_MIN_RAW = 10;
1891
+ function seedCollapseWarning(input) {
1892
+ const { seedCountRaw, canonicalCount, dedupThreshold } = input;
1893
+ if (seedCountRaw < DISCOVERY_SEED_COLLAPSE_MIN_RAW) return null;
1894
+ if (canonicalCount / seedCountRaw >= DISCOVERY_SEED_COLLAPSE_RATIO) return null;
1895
+ const noun = canonicalCount === 1 ? "query" : "queries";
1896
+ return `Seed dedup collapsed ${seedCountRaw} raw candidates into ${canonicalCount} canonical ${noun} at threshold ${dedupThreshold}. Distinct intents were likely merged into one cluster; re-run with a higher --dedup-threshold.`;
1897
+ }
1882
1898
  var discoveryRunRequestSchema = z17.object({
1883
1899
  icpDescription: z17.string().min(1).optional(),
1884
1900
  dedupThreshold: z17.number().min(0).max(1).optional(),
@@ -4440,6 +4456,8 @@ export {
4440
4456
  discoverySessionDtoSchema,
4441
4457
  discoverySessionDetailDtoSchema,
4442
4458
  DISCOVERY_MAX_PROBES_CAP,
4459
+ DISCOVERY_DEFAULT_DEDUP_THRESHOLD,
4460
+ seedCollapseWarning,
4443
4461
  discoveryRunRequestSchema,
4444
4462
  discoveryPromoteRequestSchema,
4445
4463
  discoveryPromotePreviewSchema,
@@ -9,7 +9,7 @@ import {
9
9
  loadConfig,
10
10
  loadConfigRaw,
11
11
  saveConfigPatch
12
- } from "./chunk-WFMEK34V.js";
12
+ } from "./chunk-42TDEKKM.js";
13
13
  import {
14
14
  CC_CACHE_DIR,
15
15
  DUCKDB_SPEC,
@@ -97,7 +97,7 @@ import {
97
97
  siteAuditPages,
98
98
  siteAuditSnapshots,
99
99
  usageCounters
100
- } from "./chunk-JUWU2DV6.js";
100
+ } from "./chunk-BIT3JPMW.js";
101
101
  import {
102
102
  AGENT_MEMORY_VALUE_MAX_BYTES,
103
103
  AGENT_PROVIDER_IDS,
@@ -149,7 +149,7 @@ import {
149
149
  validationError,
150
150
  winnabilityClassLabel,
151
151
  withRetry
152
- } from "./chunk-JNAKRK77.js";
152
+ } from "./chunk-ETM5EPQH.js";
153
153
 
154
154
  // src/telemetry.ts
155
155
  import crypto from "crypto";
@@ -5761,7 +5761,7 @@ function readStoredGroundingSources(rawResponse) {
5761
5761
  return result;
5762
5762
  }
5763
5763
  async function backfillInsightsCommand(project, opts) {
5764
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-L2A5MFB4.js");
5764
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-QIGX7IVQ.js");
5765
5765
  const config = loadConfig();
5766
5766
  const db = createClient(config.database);
5767
5767
  migrate(db);
package/dist/cli.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  setTelemetrySource,
28
28
  showFirstRunNotice,
29
29
  trackEvent
30
- } from "./chunk-QY5WZWU4.js";
30
+ } from "./chunk-ZUQK4TLL.js";
31
31
  import {
32
32
  CliError,
33
33
  EXIT_SYSTEM_ERROR,
@@ -44,7 +44,7 @@ import {
44
44
  saveConfig,
45
45
  saveConfigPatch,
46
46
  usageError
47
- } from "./chunk-WFMEK34V.js";
47
+ } from "./chunk-42TDEKKM.js";
48
48
  import {
49
49
  apiKeys,
50
50
  createClient,
@@ -52,7 +52,7 @@ import {
52
52
  projects,
53
53
  queries,
54
54
  renderReportHtml
55
- } from "./chunk-JUWU2DV6.js";
55
+ } from "./chunk-BIT3JPMW.js";
56
56
  import {
57
57
  CcReleaseSyncStatuses,
58
58
  CheckScopes,
@@ -72,7 +72,7 @@ import {
72
72
  providerQuotaPolicySchema,
73
73
  resolveProviderInput,
74
74
  winnabilityClassSchema
75
- } from "./chunk-JNAKRK77.js";
75
+ } from "./chunk-ETM5EPQH.js";
76
76
 
77
77
  // src/cli.ts
78
78
  import { pathToFileURL } from "url";
@@ -1797,6 +1797,7 @@ function printSessionDetail(session) {
1797
1797
  console.log(` - ${c.domain} (${c.hits} hits, ${c.competitorType})`);
1798
1798
  }
1799
1799
  }
1800
+ if (session.warning) console.log(` Warning: ${session.warning}`);
1800
1801
  if (session.error) console.log(` Error: ${session.error}`);
1801
1802
  if (session.startedAt) console.log(` Started: ${session.startedAt}`);
1802
1803
  if (session.finishedAt) console.log(` Finished: ${session.finishedAt}`);
@@ -1920,7 +1921,7 @@ Usage: ${usage}`,
1920
1921
  var DISCOVER_CLI_COMMANDS = [
1921
1922
  {
1922
1923
  path: ["discover", "run"],
1923
- usage: 'canonry discover run <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.85] [--max-probes 100] [--wait] [--format json]',
1924
+ usage: 'canonry discover run <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.95] [--max-probes 100] [--wait] [--format json]',
1924
1925
  options: {
1925
1926
  icp: stringOption(),
1926
1927
  "icp-angle": multiStringOption(),
@@ -1930,7 +1931,7 @@ var DISCOVER_CLI_COMMANDS = [
1930
1931
  wait: { type: "boolean", default: false }
1931
1932
  },
1932
1933
  run: async (input) => {
1933
- const usage = 'canonry discover run <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.85] [--max-probes 100] [--wait] [--format json]';
1934
+ const usage = 'canonry discover run <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.95] [--max-probes 100] [--wait] [--format json]';
1934
1935
  const project = requireProject(input, "discover.run", usage);
1935
1936
  await discoverRun(project, {
1936
1937
  icp: getString(input.values, "icp"),
@@ -1949,7 +1950,7 @@ var DISCOVER_CLI_COMMANDS = [
1949
1950
  },
1950
1951
  {
1951
1952
  path: ["discover", "seed"],
1952
- usage: 'canonry discover seed <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.85] [--max-probes 100] [--wait] [--format json]',
1953
+ usage: 'canonry discover seed <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.95] [--max-probes 100] [--wait] [--format json]',
1953
1954
  options: {
1954
1955
  icp: stringOption(),
1955
1956
  "icp-angle": multiStringOption(),
@@ -1959,7 +1960,7 @@ var DISCOVER_CLI_COMMANDS = [
1959
1960
  wait: { type: "boolean", default: false }
1960
1961
  },
1961
1962
  run: async (input) => {
1962
- const usage = 'canonry discover seed <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.85] [--max-probes 100] [--wait] [--format json]';
1963
+ const usage = 'canonry discover seed <project> [--icp "..."] [--icp-angle "..."] [--locations michigan,florida] [--dedup-threshold 0.95] [--max-probes 100] [--wait] [--format json]';
1963
1964
  const project = requireProject(input, "discover.seed", usage);
1964
1965
  await discoverSeed(project, {
1965
1966
  icp: getString(input.values, "icp"),
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-QY5WZWU4.js";
3
+ } from "./chunk-ZUQK4TLL.js";
4
4
  import {
5
5
  loadConfig
6
- } from "./chunk-WFMEK34V.js";
7
- import "./chunk-JUWU2DV6.js";
8
- import "./chunk-JNAKRK77.js";
6
+ } from "./chunk-42TDEKKM.js";
7
+ import "./chunk-BIT3JPMW.js";
8
+ import "./chunk-ETM5EPQH.js";
9
9
  export {
10
10
  createServer,
11
11
  loadConfig
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  IntelligenceService
3
- } from "./chunk-JUWU2DV6.js";
4
- import "./chunk-JNAKRK77.js";
3
+ } from "./chunk-BIT3JPMW.js";
4
+ import "./chunk-ETM5EPQH.js";
5
5
  export {
6
6
  IntelligenceService
7
7
  };
package/dist/mcp.js CHANGED
@@ -3,8 +3,8 @@ import {
3
3
  PACKAGE_VERSION,
4
4
  canonryMcpTools,
5
5
  createApiClient
6
- } from "./chunk-WFMEK34V.js";
7
- import "./chunk-JNAKRK77.js";
6
+ } from "./chunk-42TDEKKM.js";
7
+ import "./chunk-ETM5EPQH.js";
8
8
 
9
9
  // src/mcp/cli.ts
10
10
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainyc/canonry",
3
- "version": "4.76.0",
3
+ "version": "4.76.2",
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",
@@ -64,24 +64,24 @@
64
64
  "tsx": "^4.19.0",
65
65
  "@ainyc/canonry-api-client": "0.0.0",
66
66
  "@ainyc/canonry-api-routes": "0.0.0",
67
- "@ainyc/canonry-config": "0.0.0",
68
67
  "@ainyc/canonry-contracts": "0.0.0",
69
- "@ainyc/canonry-integration-cloud-run": "0.0.0",
68
+ "@ainyc/canonry-db": "0.0.0",
70
69
  "@ainyc/canonry-integration-bing": "0.0.0",
70
+ "@ainyc/canonry-config": "0.0.0",
71
+ "@ainyc/canonry-integration-cloud-run": "0.0.0",
71
72
  "@ainyc/canonry-integration-commoncrawl": "0.0.0",
72
73
  "@ainyc/canonry-integration-google": "0.0.0",
73
- "@ainyc/canonry-integration-google-business-profile": "0.0.0",
74
- "@ainyc/canonry-db": "0.0.0",
75
- "@ainyc/canonry-integration-wordpress": "0.0.0",
76
74
  "@ainyc/canonry-integration-google-places": "0.0.0",
77
75
  "@ainyc/canonry-integration-traffic": "0.0.0",
78
- "@ainyc/canonry-intelligence": "0.0.0",
76
+ "@ainyc/canonry-integration-google-business-profile": "0.0.0",
79
77
  "@ainyc/canonry-provider-cdp": "0.0.0",
80
- "@ainyc/canonry-provider-claude": "0.0.0",
78
+ "@ainyc/canonry-intelligence": "0.0.0",
79
+ "@ainyc/canonry-integration-wordpress": "0.0.0",
81
80
  "@ainyc/canonry-provider-gemini": "0.0.0",
82
- "@ainyc/canonry-provider-local": "0.0.0",
81
+ "@ainyc/canonry-provider-claude": "0.0.0",
83
82
  "@ainyc/canonry-provider-openai": "0.0.0",
84
- "@ainyc/canonry-provider-perplexity": "0.0.0"
83
+ "@ainyc/canonry-provider-perplexity": "0.0.0",
84
+ "@ainyc/canonry-provider-local": "0.0.0"
85
85
  },
86
86
  "scripts": {
87
87
  "build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",