@letterstory/cli 0.176.38 → 0.176.40

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
@@ -83,7 +83,7 @@ import {
83
83
  import { fetchParkedSections, withoutParked } from "./parked.mjs";
84
84
 
85
85
  // Matches cli/package.json; publish-cli.yml rewrites both to the published version.
86
- export const VERSION = "0.176.38";
86
+ export const VERSION = "0.176.40";
87
87
 
88
88
  /** The exit code for a gate refusal (CARD_REQUIRED, PAYMENT_FAILED, OUT_OF_TOKENS): 1 is a plain error. */
89
89
  export const EXIT_PAYMENT_REQUIRED = 3;
@@ -1670,10 +1670,11 @@ Insights:
1670
1670
  Plan tab's box), what's broken (--lens fix, most pressing
1671
1671
  first), what to build (--lens build), or your own words. Nothing asked:
1672
1672
  each list's head. The same answer as the console and Slack.
1673
- plan auto [activate|disable] [--site host] [--veto-hours <1-168>|off] [--auto-merge on|off]
1674
- [--aggression low|medium|high|xhigh] [--slack-channel <C…>|none]
1673
+ plan auto [activate|disable] [--site host] [--veto-hours <1-168>|off] [--pace-hours <1-168>] [--auto-merge on|off]
1674
+ [--aggression low|medium|high|xhigh] [--goal geo|seo|agent_conviction|inbound_conversion|any]
1675
+ [--slack-channel <C…>|none]
1675
1676
  Auto-Plan on a site: Letterpress picks its strategies and builds
1676
- them; each pick waits --veto-hours for a veto. Settings shown when none given.
1677
+ them (--goal: one goal's strategies, else any); each pick waits --veto-hours for a veto. Settings shown when none given.
1677
1678
  plan pending [--site host] What Auto-Plan picked and is waiting to build
1678
1679
  plan veto <proposal-id> Veto one: it is never built
1679
1680
  plan later <action-id> [--outcome geo|…] [--site host] Queue a Plan row for later: Auto-Plan starts it once it's ready
@@ -1,8 +1,9 @@
1
1
  // `plan` — Auto-Plan on one site (Plan → Auto-Plan; Plan is scoped to one website, --site, else the
2
2
  // organization's own domain). The same calls as the Plan's modal and its sidebar's Pending rows.
3
3
  // plan auto → get_auto_plan
4
- // plan auto [activate|disable] [--veto-hours <1-168>|off] [--auto-merge on|off]
5
- // [--aggression low|medium|high|xhigh] [--slack-channel <C…>|none] → set_auto_plan
4
+ // plan auto [activate|disable] [--veto-hours <1-168>|off] [--pace-hours <1-168>] [--auto-merge on|off]
5
+ // [--aggression low|medium|high|xhigh] [--goal geo|seo|agent_conviction|inbound_conversion|any]
6
+ // [--slack-channel <C…>|none] → set_auto_plan
6
7
  // plan pending → list_auto_plan_proposals (status pending)
7
8
  // plan veto <proposal-id> → veto_auto_plan_proposal
8
9
  // plan later <action-id> [--outcome geo|…] → queue_plan_action (Auto-Plan starts it once it's ready)
@@ -42,8 +43,21 @@ export const ARGS = {
42
43
  return n;
43
44
  },
44
45
  },
46
+ // --pace-hours <1-168> how often it picks the next action (1 every hour, 24 every day, 168 every week).
47
+ pace_hours: { flag: "pace-hours", type: "num" },
45
48
  merge: { value: onOff("auto-merge") },
46
49
  aggression: { flag: "aggression", enum: ["low", "medium", "high", "xhigh"] },
50
+ // --goal geo picks strategies for that goal only; --goal any (the default) reads every strategy.
51
+ goal: {
52
+ value: (flags) => {
53
+ const v = flagStr(flags.goal);
54
+ if (v === undefined) return undefined;
55
+ if (v === "any") return null;
56
+ if (!["agent_conviction", "geo", "seo", "inbound_conversion"].includes(v))
57
+ throw new CliError("--goal takes agent_conviction, geo, seo, inbound_conversion, or any.");
58
+ return v;
59
+ },
60
+ },
47
61
  slack_channel: {
48
62
  value: (flags) => {
49
63
  const v = flagStr(flags["slack-channel"]);
@@ -75,7 +89,7 @@ export const ARGS = {
75
89
  },
76
90
  };
77
91
 
78
- const SETTING_FLAGS = ["veto-hours", "auto-merge", "aggression", "slack-channel"];
92
+ const SETTING_FLAGS = ["veto-hours", "pace-hours", "auto-merge", "aggression", "goal", "slack-channel"];
79
93
 
80
94
  export async function cmdPlan(ctx) {
81
95
  const { client, flags, io } = ctx;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letterstory/cli",
3
- "version": "0.176.38",
3
+ "version": "0.176.40",
4
4
  "description": "Spin up and manage Letter phantom blogs from your terminal.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",