@ainyc/canonry 4.47.0 → 4.50.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 +11 -0
- package/assets/agent-workspace/skills/aero/references/orchestration.md +8 -0
- package/assets/agent-workspace/skills/aero/soul.md +1 -1
- package/assets/agent-workspace/skills/canonry/SKILL.md +2 -0
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +14 -1
- package/assets/assets/{index-BDMNXVHa.css → index-DOP3oQmw.css} +1 -1
- package/assets/assets/index-DVK0M62U.js +214 -0
- package/assets/assets/vendor-markdown-DN2199pt.js +14 -0
- package/assets/assets/vendor-radix-Bvy4KXTI.js +45 -0
- package/assets/assets/vendor-recharts-DPeiXMwW.js +36 -0
- package/assets/assets/vendor-tanstack-DPXTJtWt.js +1 -0
- package/assets/index.html +6 -2
- package/dist/{chunk-M7MSNUNQ.js → chunk-M4USKXJ4.js} +15 -5
- package/dist/chunk-MYDJ25GO.js +5744 -0
- package/dist/{chunk-4WXY57ET.js → chunk-QIG3TKL4.js} +1581 -753
- package/dist/{chunk-WYBKCDUH.js → chunk-YVP5CTSV.js} +840 -551
- package/dist/cli.js +15 -6
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-ADZRFCGO.js → intelligence-service-TY7IPRST.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +8 -7
- package/assets/assets/index-CPUAzk7n.js +0 -302
- package/dist/chunk-ON545FBK.js +0 -2369
|
@@ -34,6 +34,17 @@ When a project has GA4 connected, traffic is a first-class signal alongside cita
|
|
|
34
34
|
- Don't edit client's code without showing diffs and getting approval
|
|
35
35
|
- Don't conflate "not cited" with "page doesn't exist" — check first
|
|
36
36
|
|
|
37
|
+
### When to use `--probe` runs
|
|
38
|
+
When you need to **verify** something on your own initiative — "did the OpenAI provider migration land cleanly?", "is the regression still reproducible after the WP fix?", "does this query actually surface us when I think it should?" — use `cnry run <project> --probe --provider <p> --query "..."`. Probe runs:
|
|
39
|
+
- Still cost provider API quota (same wire call)
|
|
40
|
+
- Write a snapshot you can inspect via `cnry runs get <id>`
|
|
41
|
+
- Are EXCLUDED from dashboard, analytics, intelligence, insights, and notifications
|
|
42
|
+
- Won't wake you up again via the post-run hook (no recursive analysis loops)
|
|
43
|
+
|
|
44
|
+
Use probes whenever the run is for **your** investigation, not for the user's metrics. The two May-17 ainyc probes that broke the dashboard before this convention existed are the canonical example of why this matters — a 1-snapshot test masqueraded as "the latest sweep" and zeroed the headline.
|
|
45
|
+
|
|
46
|
+
A real (non-probe) sweep is appropriate when the user explicitly asks to refresh data ("run it again", "get the latest", "trigger a sweep").
|
|
47
|
+
|
|
37
48
|
### How to Communicate
|
|
38
49
|
- Data first: show the numbers before the interpretation
|
|
39
50
|
- Be specific: "You lost the ChatGPT citation for 'roof repair phoenix' between March 28-April 2" not "your visibility decreased"
|
|
@@ -32,6 +32,14 @@ Steps:
|
|
|
32
32
|
8. If content fix: generate diff (schema, llms.txt, or content changes)
|
|
33
33
|
9. Update memory with regression event + diagnosis
|
|
34
34
|
|
|
35
|
+
**Want to verify the regression is real / reproducible before reporting?** Use a probe run instead of a real sweep:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
cnry run <project> --probe --provider <p> --query "<regressed-query>"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Then `cnry runs get <id>` to inspect the snapshot. The probe's snapshot won't displace the latest scheduled sweep on the dashboard, won't generate insights, and won't fire notifications — so you can re-test as many times as needed without polluting metrics. Promote to a real sweep (drop `--probe`) only if the operator explicitly wants the data to feed the dashboard.
|
|
42
|
+
|
|
35
43
|
## Workflow 3: Weekly Review
|
|
36
44
|
|
|
37
45
|
Trigger: Scheduled (weekly, or on-demand)
|
|
@@ -12,7 +12,7 @@ You are **Aero** — an AEO analyst. You help operators understand how AI answer
|
|
|
12
12
|
- **Evidence over opinion.** Numbers before interpretation. "You lost the ChatGPT citation for 'roof repair phoenix' between March 28 and April 2" beats "your visibility decreased."
|
|
13
13
|
- **Proactive, not passive.** Regressions don't wait to be asked about. Surface them when you spot them. Flag emerging competitors the moment they appear in citations you own.
|
|
14
14
|
- **Honest about uncertainty.** When the data is ambiguous, say so. Don't manufacture confidence. Don't promise fixes will appear in the next sweep — AEO changes take weeks.
|
|
15
|
-
- **Cautious with writes.** Sweeps cost quota. Schedules shape downstream notifications. Queries define what gets tracked. Confirm intent before mutating state the operator will notice.
|
|
15
|
+
- **Cautious with writes.** Sweeps cost quota. Schedules shape downstream notifications. Queries define what gets tracked. Confirm intent before mutating state the operator will notice. When *you* need to test something (verify a fix, reproduce a regression), use `cnry run --probe` — same wire call, no dashboard/analytics/notification pollution.
|
|
16
16
|
- **Canonry is the source of truth.** Read state back; never maintain a parallel copy in your head. Conclusions age, the data doesn't.
|
|
17
17
|
|
|
18
18
|
## Voice
|
|
@@ -77,6 +77,8 @@ A canonry engagement follows the same loop regardless of project size:
|
|
|
77
77
|
4. **Monitor** — Re-run sweeps weekly (`cnry run --all --wait` fans out across every project). Correlate visibility shifts with deployments and competitor moves.
|
|
78
78
|
5. **Report** — Lead with data, not interpretation: "Lost the mention for `<query>` on Gemini between <date> and <date> — two competitors moved in. Here's what to fix." For a one-command client-facing summary, run `cnry report <project>` to generate a self-contained HTML bundle (mention + citation hero, competitor landscape, GSC + GA4 performance, insights, suggested next queries). Same payload is available via `--format json` and the `canonry_report` MCP tool.
|
|
79
79
|
|
|
80
|
+
**Verifying without polluting metrics**: when you need to test something on your own initiative — "did the latest provider deploy work?", "is this regression reproducible?", "would this query actually surface us?" — use `cnry run <project> --probe --provider <p> --query "..."`. Probe runs write a snapshot you can inspect via `cnry runs get <id>` but are excluded from the dashboard, analytics, intelligence, report, and notifications. Use probes for *your* investigation; use real sweeps when the operator wants the data to feed metrics.
|
|
81
|
+
|
|
80
82
|
## Surgical Reads
|
|
81
83
|
|
|
82
84
|
When you need a specific value rather than a full payload, use the dot-path getter:
|
|
@@ -78,9 +78,10 @@ cnry run <project> --wait # block until complete
|
|
|
78
78
|
cnry run <project> --location <label> # run with specific location context
|
|
79
79
|
cnry run <project> --all-locations # run for every configured location
|
|
80
80
|
cnry run <project> --no-location # explicitly skip location context
|
|
81
|
+
cnry run <project> --probe --provider openai --query "..." # operator/agent test run — snapshot is inspectable but EXCLUDED from dashboard, analytics, intelligence, report, and notifications. Use for verification / "did this fix work?" / regression hypothesis testing.
|
|
81
82
|
cnry run --all --wait # all projects
|
|
82
83
|
cnry run cancel <project> [run-id] # force-cancel stuck runs
|
|
83
|
-
cnry runs <project> --limit 10 # list recent runs
|
|
84
|
+
cnry runs <project> --limit 10 # list recent runs (includes both real and probe runs; filter on `trigger` if you only want one)
|
|
84
85
|
cnry run show <id> # show run details
|
|
85
86
|
```
|
|
86
87
|
|
|
@@ -88,6 +89,18 @@ Run statuses: `queued` → `running` → `completed` / `failed` / `partial`
|
|
|
88
89
|
|
|
89
90
|
`partial` = some providers failed (usually rate limits) — successful snapshots are still saved.
|
|
90
91
|
|
|
92
|
+
### Probe vs real runs
|
|
93
|
+
|
|
94
|
+
| Trigger | Source | Feeds dashboard/analytics | Runs intelligence | Fires notifications | Wakes Aero |
|
|
95
|
+
|---|---|---|---|---|---|
|
|
96
|
+
| `manual` | `cnry run <project>` | ✅ | ✅ | ✅ | ✅ |
|
|
97
|
+
| `scheduled` | cron schedule | ✅ | ✅ | ✅ | ✅ |
|
|
98
|
+
| `config-apply` | `cnry apply` after queries change | ✅ | ✅ | ✅ | ✅ |
|
|
99
|
+
| `backfill` | `cnry backfill ...` | partial (historical) | ✅ | — | — |
|
|
100
|
+
| **`probe`** | `cnry run --probe ...` | ❌ | ❌ | ❌ | ❌ |
|
|
101
|
+
|
|
102
|
+
Use `--probe` whenever you're testing on your own initiative — verifying a fix landed, reproducing a regression, sanity-checking a query — rather than producing data the user/dashboard will consume.
|
|
103
|
+
|
|
91
104
|
`snapshot` does not create a project or write to the DB. It generates category queries, runs providers, and produces a report for prospecting.
|
|
92
105
|
|
|
93
106
|
## Citation Data
|