@letterstory/cli 0.176.49 → 0.176.51

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
@@ -85,7 +85,7 @@ import {
85
85
  import { fetchParkedSections, withoutParked } from "./parked.mjs";
86
86
 
87
87
  // Matches cli/package.json; publish-cli.yml rewrites both to the published version.
88
- export const VERSION = "0.176.49";
88
+ export const VERSION = "0.176.51";
89
89
 
90
90
  /** The exit code for a gate refusal (CARD_REQUIRED, PAYMENT_FAILED, OUT_OF_TOKENS): 1 is a plain error. */
91
91
  export const EXIT_PAYMENT_REQUIRED = 3;
@@ -1677,7 +1677,8 @@ Insights:
1677
1677
  Plan tab's box), what's broken (--lens fix, most pressing
1678
1678
  first), what to build (--lens build), or your own words. Nothing asked:
1679
1679
  each list's head. The same answer as the console and Slack.
1680
- plan auto [activate|disable] [--site host] [--veto-hours <1-168>|off] [--pace-hours <1-168>] [--auto-merge on|off]
1680
+ plan auto [activate|disable] [--site host] [--veto-hours <1-168>|off] [--pace-hours <1-168>]
1681
+ [--delivery build|build_pr|build_merge]
1681
1682
  [--aggression low|medium|high|xhigh] [--goal geo|seo|agent_conviction|inbound_conversion|any]
1682
1683
  [--slack-channel <C…>|none]
1683
1684
  Auto-Plan on a site: Letterpress picks its strategies and builds
@@ -1740,7 +1741,8 @@ Build (a change to your site, or launching what isn't code; the Build box's own
1740
1741
  build status <build-id> One build: each change's state, its preview and pull request
1741
1742
  build follow <build-id> [--json] What its agents do, line by line, until nothing in it is at
1742
1743
  work (as letterpress follows a build); --json: one line per event
1743
- build conversations [--limit <n>] Your conversations with Build, most recently active first
1744
+ build conversations [--limit <n>] [--origin <door>] Your conversations with Build, most recently active first;
1745
+ --origin console: only the Build box's (letter_edit: ⌘L's)
1744
1746
  build conversation <conversation-id> | --build <build-id>
1745
1747
  Every message in one, oldest first
1746
1748
 
@@ -138,7 +138,8 @@ const ARGS = {
138
138
  // --from-plan: only what the Plan started (a strategy's row, Auto-Plan's pick), as the Plan's Actions list shows it.
139
139
  from_plan: { flag: "from-plan", type: "bool" },
140
140
  },
141
- list_build_conversations: { limit: { flag: "limit", type: "num" } },
141
+ // --origin console: only what the app's Build box started (letter_edit: ⌘L's, mcp: the terminal's or an agent's).
142
+ list_build_conversations: { limit: { flag: "limit", type: "num" }, origin: "origin" },
142
143
  get_build_conversation: {
143
144
  conversation_id: { positional: 0, label: "conversation-id" },
144
145
  build_id: "build",
@@ -403,7 +404,7 @@ async function buildFollow(ctx) {
403
404
  /** `build conversations`: the organization's conversations with Build, most recently active first. */
404
405
  async function buildConversations(ctx) {
405
406
  const { client, flags, io } = ctx;
406
- refuseUnknownFlags(ctx, {}, ["limit"]);
407
+ refuseUnknownFlags(ctx, {}, ["limit", "origin"]);
407
408
  const result = await client.callTool(
408
409
  "list_build_conversations",
409
410
  argsFromFlags(ARGS.list_build_conversations, flags)
@@ -1,7 +1,7 @@
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] [--pace-hours <1-168>] [--auto-merge on|off]
4
+ // plan auto [activate|disable] [--veto-hours <1-168>|off] [--pace-hours <1-168>] [--delivery build|build_pr|build_merge]
5
5
  // [--aggression low|medium|high|xhigh] [--goal geo|seo|agent_conviction|inbound_conversion|any]
6
6
  // [--slack-channel <C…>|none] → set_auto_plan
7
7
  // plan pending → list_auto_plan_proposals (status pending)
@@ -28,13 +28,6 @@ const jsonFlag = (name) => ({
28
28
  }
29
29
  },
30
30
  });
31
- const onOff = (name) => (flags) => {
32
- const v = flagStr(flags[name]);
33
- if (v === undefined) return undefined;
34
- if (["on", "true", "1"].includes(v)) return true;
35
- if (["off", "false", "0"].includes(v)) return false;
36
- throw new CliError(`--${name} takes on or off.`);
37
- };
38
31
 
39
32
  export const ARGS = {
40
33
  list_plan_work_purposes: { resource: jsonFlag("resource"), strategy_id: "strategy" },
@@ -71,7 +64,8 @@ export const ARGS = {
71
64
  },
72
65
  // --pace-hours <1-168> how often it picks the next action (1 every hour, 24 every day, 168 every week).
73
66
  pace_hours: { flag: "pace-hours", type: "num" },
74
- merge: { value: onOff("auto-merge") },
67
+ // How far each pick goes: a preview, a pull request, or one merged once ready.
68
+ delivery: { flag: "delivery", enum: ["build", "build_pr", "build_merge"] },
75
69
  aggression: { flag: "aggression", enum: ["low", "medium", "high", "xhigh"] },
76
70
  // --goal geo picks strategies for that goal only; --goal any (the default) reads every strategy.
77
71
  goal: {
@@ -117,7 +111,7 @@ export const ARGS = {
117
111
  },
118
112
  };
119
113
 
120
- const SETTING_FLAGS = ["veto-hours", "pace-hours", "auto-merge", "aggression", "goal", "slack-channel"];
114
+ const SETTING_FLAGS = ["veto-hours", "pace-hours", "delivery", "aggression", "goal", "slack-channel"];
121
115
 
122
116
  export async function cmdPlan(ctx) {
123
117
  const { client, flags, io } = ctx;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letterstory/cli",
3
- "version": "0.176.49",
3
+ "version": "0.176.51",
4
4
  "description": "Spin up and manage Letter phantom blogs from your terminal.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",