@letterstory/cli 0.108.4 → 0.110.0

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
@@ -60,7 +60,7 @@ import {
60
60
  } from "./commands.mjs";
61
61
 
62
62
  // Keep in sync with cli/package.json.
63
- export const VERSION = "0.108.4";
63
+ export const VERSION = "0.110.0";
64
64
 
65
65
  // Flags that never take a value. Listing them explicitly means `deploy get --json <id>`
66
66
  // can't accidentally swallow the id as --json's value. Every `type: "bool"` flag (and its
@@ -623,8 +623,7 @@ Propose lane (the Fleet wizard's Plan and Name screens; persists nothing, spends
623
623
  What does this org still need? (the router — reads only, decides nothing):
624
624
  ${bin === "phantom" ? "onboard" : "phantom-onboard"} primitives [<domain>] [--retry] The primitives that fit a domain (default:
625
625
  yours), each with the exact call that sets
626
- it up — the plan Instances shows;
627
- --primitives kernel,phantom keeps only those
626
+ it up — the plan Instances shows
628
627
  ${bin === "phantom" ? "onboard" : "phantom-onboard"} plan Every onboarding step (context, main blog,
629
628
  Planner, CMS, phantom) with its status:
630
629
  done / running / ready / blocked, and what
@@ -894,6 +893,7 @@ Seers (event-driven signals -> drafts):
894
893
  org export [--sections <s>…] [--file <path>] The org's whole config as one JSON bundle
895
894
  org export --split <dir> …as one file per record (for keeping config in git)
896
895
  org join <dir> [--file <path>] Rebuild the bundle from a --split directory
896
+ org integrations Every integration and whether it's connected
897
897
  org diff <file|dir> What applying a bundle would change (reads only)
898
898
  org apply <file|dir> [--dry-run] [--prune --yes] Make the org match a bundle (adds/updates; --prune deletes)
899
899
  [--allow spends,sends,destroys,access --yes] Also apply gated changes (admins; without --yes it only previews)
@@ -1161,7 +1161,7 @@ The Site (one model of your whole marketing site, keyed by host and path):
1161
1161
  site refresh <host> [--force-map] [--force-audit] [--skip-observe]
1162
1162
  Run the daily loop now: re-map, re-audit, signals, Jev
1163
1163
  site unmap <host> Remove a host and everything hanging off it
1164
- site tree <host> [path] [--depth <n>] [--unfold] [--since <iso>] [--focus-size <n|all>]
1164
+ site tree <host> [path] [--depth <n>] [--unfold] [--since <iso>]
1165
1165
  The tree one folder at a time; --since adds +N/-N per folder
1166
1166
  site page <host> <path> One page: facts, bindings, raw URLs, open items
1167
1167
  site observations <host> [path] [--state open|dismissed|resolved] [--tone risk|warn|info] [--key <k>] [--since <iso>] [--min-reach <0..1>]
@@ -1183,7 +1183,7 @@ Repo changes (Claude Code edits your repo in a sandbox; the Letterstory GitHub A
1183
1183
  repo prs [--repo owner/name] Every open PR (whoever opened it), longest-idle first
1184
1184
  repo suggestions Fixes found and not acted on yet, and how to start each
1185
1185
  repo settings [--action build|build_pr|slack] [--branch <name>|none] [--slack-agent <name|U…>|none]
1186
- [--slack-channel <C…>|none] [--slack-reports off|as_found|daily] [--autopilot on|off] [--autopilot-weekly <1-20>]
1186
+ [--slack-channel <C…>|none] [--slack-reports off|as_found|daily] [--reports-channel <C…>|none] [--autopilot-channel <C…>|none] [--autopilot on|off] [--autopilot-weekly <1-20>]
1187
1187
  [--autopilot-severity critical|warning]
1188
1188
  The org's defaults for every fix: build (preview first),
1189
1189
  build_pr, or slack (post it to --slack-channel for your
@@ -26,6 +26,7 @@ export const ARGS = {
26
26
  confirm: { flag: "confirm" },
27
27
  },
28
28
  get_org_config_source: {},
29
+ list_integrations: {},
29
30
  connect_org_config_source: {
30
31
  repo: { positional: 0, label: "owner/name" },
31
32
  branch: { flag: "branch" },
@@ -53,11 +54,27 @@ export async function cmdOrg(ctx) {
53
54
  return orgApply(rest);
54
55
  case "git":
55
56
  return orgGit(rest);
57
+ case "integrations":
58
+ return orgIntegrations(rest);
56
59
  default:
57
- throw new CliError(`Unknown org subcommand: ${sub ?? "(none)"}. Try: export, join, diff, apply, git`);
60
+ throw new CliError(
61
+ `Unknown org subcommand: ${sub ?? "(none)"}. Try: export, join, diff, apply, git, integrations`
62
+ );
58
63
  }
59
64
  }
60
65
 
66
+ /** `org integrations`: every integration and whether it's connected (list_integrations). */
67
+ async function orgIntegrations(ctx) {
68
+ const { client, flags, io } = ctx;
69
+ refuseUnknownFlags(ctx, {}, []);
70
+ const result = await client.callTool("list_integrations", {});
71
+ ok(ctx, result.message);
72
+ printResult(io, flags, result, (r) =>
73
+ r.integrations.map((i) => `${i.connected ? "●" : "○"} ${i.name}${i.detail ? ` (${i.detail})` : ""}`).join("\n")
74
+ );
75
+ return 0;
76
+ }
77
+
61
78
  const ROOT_FILE = "organization.json";
62
79
 
63
80
  function slug(name) {
@@ -99,6 +99,13 @@ const ARGS = {
99
99
  },
100
100
  // --slack-reports off|as_found|daily
101
101
  slack_reports: { flag: "slack-reports", enum: ["off", "as_found", "daily"] },
102
+ // --reports-channel C…|none, --autopilot-channel C…|none (none = the fix channel)
103
+ slack_reports_channel: {
104
+ value: (flags) => (flags["reports-channel"] === "none" ? null : flagStr(flags["reports-channel"])),
105
+ },
106
+ autopilot_channel: {
107
+ value: (flags) => (flags["autopilot-channel"] === "none" ? null : flagStr(flags["autopilot-channel"])),
108
+ },
102
109
  // --autopilot on|off, --autopilot-weekly <1-20>, --autopilot-severity critical|warning
103
110
  autopilot: {
104
111
  value: (flags) =>
@@ -462,6 +469,8 @@ async function repoSettings(ctx) {
462
469
  "slack-agent",
463
470
  "slack-channel",
464
471
  "slack-reports",
472
+ "reports-channel",
473
+ "autopilot-channel",
465
474
  "autopilot",
466
475
  "autopilot-weekly",
467
476
  "autopilot-severity",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letterstory/cli",
3
- "version": "0.108.4",
3
+ "version": "0.110.0",
4
4
  "description": "Spin up and manage Letterstory phantom blogs from your terminal.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",