@letterstory/cli 0.108.4 → 0.109.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.109.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>]
@@ -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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letterstory/cli",
3
- "version": "0.108.4",
3
+ "version": "0.109.0",
4
4
  "description": "Spin up and manage Letterstory phantom blogs from your terminal.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",