@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 +5 -5
- package/lib/commands/org.mjs +18 -1
- package/lib/commands/repo.mjs +9 -0
- package/package.json +1 -1
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.
|
|
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>]
|
|
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
|
package/lib/commands/org.mjs
CHANGED
|
@@ -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(
|
|
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) {
|
package/lib/commands/repo.mjs
CHANGED
|
@@ -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",
|