@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 +5 -4
- package/lib/commands/plan.mjs +17 -3
- package/package.json +1 -1
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.
|
|
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] [--
|
|
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
|
package/lib/commands/plan.mjs
CHANGED
|
@@ -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] [--
|
|
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;
|