@letterstory/cli 0.177.26 → 0.177.27

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
@@ -88,7 +88,7 @@ import {
88
88
  import { fetchParkedSections, withoutParked } from "./parked.mjs";
89
89
 
90
90
  // Matches cli/package.json; publish-cli.yml rewrites both to the published version.
91
- export const VERSION = "0.177.26";
91
+ export const VERSION = "0.177.27";
92
92
 
93
93
  /** The exit code for a gate refusal (CARD_REQUIRED, PAYMENT_FAILED, OUT_OF_TOKENS): 1 is a plain error. */
94
94
  export const EXIT_PAYMENT_REQUIRED = 3;
@@ -710,7 +710,7 @@ Reviewers:
710
710
  [--event <name>] [--kind post|landing] [--competitor <host>] [--site <host>]
711
711
  [--every <n> --unit hours|days|weeks|months] [--facts <a,b>] [--recipe <id>]
712
712
  [--fit-run <run-id> --publication-host <site>]
713
- [--hot-leads-only] [--per-day <n>] [--backfill all|<YYYY-MM-DD>] [--off]
713
+ [--hot-leads-only] [--icp] [--per-day <n>] [--backfill all|<YYYY-MM-DD>] [--off]
714
714
  Make one (a template fills what you leave out): it starts
715
715
  from now (--backfill also runs it on past events, oldest
716
716
  first), acts on its own, and posts each event it acts on
@@ -2012,7 +2012,7 @@ Visits (Visitors: AI agents reading your site, and AI answers sending people to
2012
2012
  Who was identified, and who fits your ICP
2013
2013
  visits compare <agent-a> <agent-b> [--since 7d] [--path '/docs/*'] [--purpose <p>]
2014
2014
  Pages one agent read that the other didn't
2015
- visits export [--since 30d] [--format json|csv] [--table agent_visits|citations]
2015
+ visits export [--since 30d] [--format json|csv] [--table agent_visits|citations] [--include agents|people|companies] [--icp|--not-icp]
2016
2016
  visits sites Your Visitors sites and their install checks
2017
2017
  visits domain <domain> [--site <id>] [--name <n>] Move a site to a new domain, keeping its key
2018
2018
  visits pages [--since 28d] [--path '/docs/*'] [--agent <id>] [--limit <n>] [--site <id>]
@@ -48,6 +48,8 @@ const triggerParams = {
48
48
  competitors: { flag: "competitor", type: "list" },
49
49
  hosts: { flag: "site", type: "list" },
50
50
  hot_leads_only: { flag: "hot-leads-only", type: "bool" },
51
+ // --icp: only people who fit the company's ICP (visitor_identified), checked against their stored fit.
52
+ icp: { flag: "icp", type: "bool" },
51
53
  event: { flag: "event" },
52
54
  per_day: { flag: "per-day", type: "num" },
53
55
  // --trigger schedule --every 2 --unit weeks: a recurring automation, on the calendar (Monday, the 1st).
@@ -11,6 +11,7 @@
11
11
  // letterstory visits people --since 30d [--path /pricing] people who read the site, and how many were identified
12
12
  // letterstory visits who --icp [--category Investors] [--path /pricing] who was identified (--icp: who fits your ICP)
13
13
  // letterstory visits export --since 30d --format csv
14
+ // letterstory visits export --include people --icp > icp.csv the people who fit your ICP, as Humans shows them
14
15
  // letterstory visits sites
15
16
  // letterstory visits domain composal.com [--site <id>] move the site to a new domain, keeping its key
16
17
  // letterstory visits pages --since 28d [--path '/docs/*'] [--agent openai-crawler]
@@ -77,7 +78,15 @@ export const ARGS = {
77
78
  path: "path",
78
79
  purpose: { flag: "purpose", enum: PURPOSES },
79
80
  },
80
- visitors_export: { site_id: "site", days, format: { flag: "format", enum: ["json", "csv"] } },
81
+ visitors_export: {
82
+ site_id: "site",
83
+ days,
84
+ format: { flag: "format", enum: ["json", "csv"] },
85
+ include: { flag: "include", enum: ["agents", "people", "companies"] },
86
+ icp: { flag: "icp", type: "bool", negate: "not-icp" },
87
+ category: "category",
88
+ path: "path",
89
+ },
81
90
  };
82
91
 
83
92
  /** `7d`, `7`, `2w` → days (1-90). Absent → undefined (the tool's default, 30). */
@@ -362,6 +371,12 @@ async function visitsCompare(ctx) {
362
371
  async function visitsExport(ctx) {
363
372
  const { flags, io } = ctx;
364
373
  const result = await call(ctx, "visitors_export");
374
+ // People or companies: the CSV, as the Humans or Companies tab exports it (pipe to a file).
375
+ if (result.include === "people" || result.include === "companies") {
376
+ if (flags.json) io.log(JSON.stringify(result, null, 2));
377
+ else io.log(result.include === "people" ? result.csv_people : result.csv_companies);
378
+ return 0;
379
+ }
365
380
  if (flagStr(flags.format) === "csv" && !flags.json && result.csv) {
366
381
  // --table picks one; default is agent visits (pipe to a file).
367
382
  const table = flagStr(flags.table) ?? "agent_visits";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letterstory/cli",
3
- "version": "0.177.26",
3
+ "version": "0.177.27",
4
4
  "description": "Spin up and manage Letter phantom blogs from your terminal.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",