@letterstory/cli 0.176.23 → 0.176.25
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/lib/cli.mjs +6 -3
- package/lib/commands/insights.mjs +11 -2
- package/lib/commands/repo.mjs +2 -0
- package/package.json +1 -1
package/lib/cli.mjs
CHANGED
|
@@ -82,7 +82,7 @@ import {
|
|
|
82
82
|
import { fetchParkedSections, withoutParked } from "./parked.mjs";
|
|
83
83
|
|
|
84
84
|
// Matches cli/package.json; publish-cli.yml rewrites both to the published version.
|
|
85
|
-
export const VERSION = "0.176.
|
|
85
|
+
export const VERSION = "0.176.25";
|
|
86
86
|
|
|
87
87
|
/** The exit code for a gate refusal (CARD_REQUIRED, PAYMENT_FAILED, OUT_OF_TOKENS): 1 is a plain error. */
|
|
88
88
|
export const EXIT_PAYMENT_REQUIRED = 3;
|
|
@@ -335,6 +335,7 @@ export const BOOLEAN_FLAGS = new Set([
|
|
|
335
335
|
"now",
|
|
336
336
|
"opt-out-footer",
|
|
337
337
|
"postal-address-footer",
|
|
338
|
+
"privacy-only",
|
|
338
339
|
"redesign",
|
|
339
340
|
"release-mailbox",
|
|
340
341
|
"rival",
|
|
@@ -1667,6 +1668,8 @@ Insights:
|
|
|
1667
1668
|
Measure → Reads: AI engines and people reading your sites, counted one way
|
|
1668
1669
|
insights questions [--period 14d|30d|90d] Measure → Questions: every question we ask, named / share / change / cited
|
|
1669
1670
|
insights pages [--period 14d|30d|90d] [--site own|phantoms|<key>] Measure → Pages: your pages AI answers cited, won questions first
|
|
1671
|
+
insights page <page> [--period 14d|30d|90d] [--question <prompt-id>] [--filter all|won] [--limit n]
|
|
1672
|
+
One cited page: the AI answers that linked it, word for word
|
|
1670
1673
|
insights mentions [--site phantoms|<key>]... Measure → Pages → Naming you: which posts on your phantom sites name you
|
|
1671
1674
|
insights competitors [--period 14d|30d|90d] GEO → Competitors: share of mentions per brand, is it moving, by engine/question
|
|
1672
1675
|
insights question <key> [--period 14d|30d|90d] [--filter all|named_you|rival_not_you|no_one] [--limit n]
|
|
@@ -1777,7 +1780,7 @@ Repo changes (Claude Code edits your repo in a sandbox; the Letter GitHub App op
|
|
|
1777
1780
|
repo install-letterprove --repo <owner/name> [--gitlab] [--branch <base>] [--action build|build_pr|build_merge|slack|linear] [--wait]
|
|
1778
1781
|
One PR adding Letterprove's script and identify calls
|
|
1779
1782
|
(pick the repo where users sign in)
|
|
1780
|
-
repo install-visitors [--site <id>] [--repo <owner/name> [--gitlab]] [--branch <base>] [--action build|build_pr|build_merge|slack|linear] [--wait]
|
|
1783
|
+
repo install-visitors [--site <id>] [--repo <owner/name> [--gitlab]] [--branch <base>] [--action build|build_pr|build_merge|slack|linear] [--privacy-only] [--wait]
|
|
1781
1784
|
One PR adding the Visitors script tag and server snippet to the repo that
|
|
1782
1785
|
builds the site (--repo: another repo)
|
|
1783
1786
|
repo sites [--detect [--force]] Which website each repo builds, and the evidence
|
|
@@ -1795,7 +1798,7 @@ Repo changes (Claude Code edits your repo in a sandbox; the Letter GitHub App op
|
|
|
1795
1798
|
repo activity <run-id> [--follow] [--since <iso>] What the sandbox is doing, line by line (--follow: until it stops)
|
|
1796
1799
|
repo say <run-id> <message…> Tell a running build something; it carries on with it
|
|
1797
1800
|
repo list [--status running|succeeded|no_changes|failed|cancelled] [--limit n] [--audit <id>]
|
|
1798
|
-
[--source site_audit_issue|site_quick_check|letterprove_install|visitors_install]
|
|
1801
|
+
[--source site_audit_issue|site_quick_check|letterprove_install|visitors_install|visitors_privacy]
|
|
1799
1802
|
[--detail full] one row per run by default; full: every field
|
|
1800
1803
|
repo publish <run-id> Make PR on a preview in review
|
|
1801
1804
|
repo merge <run-id> Merge its open PR (a squash; the repo's branch rules decide)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// network, single-post, and top-posts levels (ported from phantomstory-cli's
|
|
3
3
|
// insights.ts); plus Measure's Overview (`summary`), GEO → Competitors
|
|
4
4
|
// (`competitors`), AI Visibility Bank (`bank`) and phantom Page Access (`access`);
|
|
5
|
-
// Measure → Reads (`reads`), Questions (`questions`), Pages (`pages`) and the posts naming you (`mentions`), and the live feed of what
|
|
5
|
+
// Measure → Reads (`reads`), Questions (`questions`), Pages (`pages`, one page's answers `page`) and the posts naming you (`mentions`), and the live feed of what
|
|
6
6
|
// is reading the phantom sites (`activity`) — the same reads the web app renders.
|
|
7
7
|
|
|
8
8
|
import { CliError } from "../client.mjs";
|
|
@@ -42,6 +42,13 @@ export const ARGS = {
|
|
|
42
42
|
period: { flag: "period", enum: PERIODS },
|
|
43
43
|
sites: { flag: "site", type: "list" },
|
|
44
44
|
},
|
|
45
|
+
get_cited_page_answers: {
|
|
46
|
+
page: { positional: 0, label: "page", required: true },
|
|
47
|
+
period: { flag: "period", enum: PERIODS },
|
|
48
|
+
prompt_id: { flag: "question" },
|
|
49
|
+
filter: { flag: "filter", enum: ["all", "won"] },
|
|
50
|
+
limit: { flag: "limit", type: "num" },
|
|
51
|
+
},
|
|
45
52
|
list_site_mentions: {
|
|
46
53
|
sites: { flag: "site", type: "list" },
|
|
47
54
|
},
|
|
@@ -85,13 +92,15 @@ export async function cmdInsights(ctx) {
|
|
|
85
92
|
return call(rest, "list_measure_questions");
|
|
86
93
|
case "pages":
|
|
87
94
|
return call(rest, "list_cited_pages");
|
|
95
|
+
case "page":
|
|
96
|
+
return call(rest, "get_cited_page_answers");
|
|
88
97
|
case "mentions":
|
|
89
98
|
return call(rest, "list_site_mentions");
|
|
90
99
|
case "activity":
|
|
91
100
|
return call(rest, "get_recent_activity");
|
|
92
101
|
default:
|
|
93
102
|
throw new CliError(
|
|
94
|
-
`Unknown insights subcommand: ${sub ?? "(none)"}. Try: summary, reads, questions, pages, mentions, competitors, question, detection, activity, site, post, top, bank, access`
|
|
103
|
+
`Unknown insights subcommand: ${sub ?? "(none)"}. Try: summary, reads, questions, pages, page, mentions, competitors, question, detection, activity, site, post, top, bank, access`
|
|
95
104
|
);
|
|
96
105
|
}
|
|
97
106
|
}
|
package/lib/commands/repo.mjs
CHANGED
|
@@ -168,6 +168,7 @@ const ARGS = {
|
|
|
168
168
|
repo_name: { value: (flags) => splitRepo(flags).name },
|
|
169
169
|
base_branch: "branch",
|
|
170
170
|
action: { flag: "action", enum: ["build", "build_pr", "build_merge", "slack", "linear"] },
|
|
171
|
+
privacy_only: { flag: "privacy-only", type: "bool" },
|
|
171
172
|
},
|
|
172
173
|
get_repo_change_settings: {},
|
|
173
174
|
list_suggested_fixes: {},
|
|
@@ -268,6 +269,7 @@ const ARGS = {
|
|
|
268
269
|
"site_quick_check",
|
|
269
270
|
"letterprove_install",
|
|
270
271
|
"visitors_install",
|
|
272
|
+
"visitors_privacy",
|
|
271
273
|
"collection_publish",
|
|
272
274
|
],
|
|
273
275
|
},
|