@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 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.23";
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
  }
@@ -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
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letterstory/cli",
3
- "version": "0.176.23",
3
+ "version": "0.176.25",
4
4
  "description": "Spin up and manage Letter phantom blogs from your terminal.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",