@fluid-app/fluid-cli-mist 0.1.30 → 0.1.32

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/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # @fluid-app/fluid-cli-mist
2
+
3
+ Fluid CLI plugin for Mist hosted extensions. The `fluid` CLI discovers it through the `fluid-cli-*` naming convention and adds the `fluid mist` commands. The full command surface is specified in [`features/mist/cli-spec.md`](../../../features/mist/cli-spec.md).
4
+
5
+ Each command takes an optional mist slug. Without one, it reads the `.mist` file in the current directory, which `fluid mist clone` writes.
6
+
7
+ ## Commands
8
+
9
+ | Command | Purpose |
10
+ | ------------------------------------------------------- | -------------------------------------------- |
11
+ | `list`, `show`, `create`, `update`, `delete`, `restore` | Manage mists |
12
+ | `clone`, `push`, `pull`, `open` | Work with the code and the deployed app |
13
+ | `attach`, `attach-droplet` | Wire a surface (such as a Droplet) to a mist |
14
+ | `deployments`, `logs` | See builds and runtime output |
15
+ | `env list\|set\|unset\|pull` | Manage production env vars |
16
+ | `droplet repair\|reinstall` | Repair or reinstall the attached Droplet |
17
+
18
+ ## Generating a secret
19
+
20
+ ```bash
21
+ fluid mist env set WEBHOOK_AUTH_TOKEN --generate # 32 bytes
22
+ fluid mist env set my-mist SESSION_SECRET --generate --bytes 64
23
+ ```
24
+
25
+ `--generate` mints a cryptographically strong base64url secret (16 to 128 bytes, default 32), writes it to the key, and prints it once. Fluid stores env values encrypted and `env list` never shows them, so copy the secret immediately if you also need it in `.env.local`. It uses the same generator as Mist's `set_mist_env_var` tool. It refuses Mist-managed keys before generating anything. Redeploy with `fluid mist push` for the change to take effect.
26
+
27
+ ## Repairing the attached Droplet
28
+
29
+ ```bash
30
+ fluid mist droplet repair --dry-run # show the planned change
31
+ fluid mist droplet repair # prompt, then apply
32
+ fluid mist droplet repair --yes # apply without a prompt
33
+ ```
34
+
35
+ This sets the Droplet's `embed_url`, `install_webhook_url` and `uninstall_webhook_url` from the mist's `public_url` as Fluid reports it. The local `.mist` file's copy of the URL is never used. The webhook paths come from `dropletLifecycle` in `fluid.capabilities.json` when you run it inside the project. Otherwise it uses `/api/webhooks/installed` and `/api/webhooks/uninstalled`. Only those three fields change, and the command re-reads the Droplet to verify them. Without a terminal to prompt in, it needs `--yes`.
36
+
37
+ A repair fixes future lifecycle delivery. It does not replay `droplet.installed` for an existing installation; for that, use `reinstall`.
38
+
39
+ ## Reinstalling the attached Droplet (irreversible)
40
+
41
+ ```bash
42
+ fluid mist droplet reinstall --dry-run # 1. show the exact plan
43
+ fluid mist droplet reinstall --confirm # 2. execute it
44
+ ```
45
+
46
+ `reinstall` repairs the lifecycle URLs and asks Fluid to replace the mist's own Droplet installation in one durable operation. In that operation Fluid revokes the installation, delivers the uninstall, terminalizes it and creates the replacement. The CLI never deletes and re-creates an installation itself. The rules match Mist's `repair_and_reinstall_droplet` tool:
47
+
48
+ - **Plan first.** `--dry-run` changes nothing. It prints the Mist, the Droplet, the installation and the replacement endpoint.
49
+ - **Explicit approval.** `--confirm` executes only when a `--dry-run` ran in the last 15 minutes for the same Droplet, installation and lifecycle URLs. `--yes` never approves a reinstall. `--confirm` uses up the plan whether or not it goes ahead, and two `--confirm` runs can't share one plan, so a retry needs a new `--dry-run`.
50
+ - **Own Droplet only.** The Droplet is always the one attached to the mist, and Fluid rejects installations of any other Droplet.
51
+ - **Resumable watching.** The CLI watches for 120 seconds by default (`--watch-timeout <seconds>`). A slower replacement returns `"status": "still_running"` together with the command that continues watching it:
52
+
53
+ ```bash
54
+ fluid mist droplet reinstall --resume <operationId> --installation <installationUuid>
55
+ ```
56
+
57
+ A resume starts nothing and needs no new plan, but it requires `--installation` and doesn't accept `--dry-run`. The reinstall is done only when `status` is `"succeeded"`.
58
+
59
+ - **Recovery.** A failed attempt may already have terminalized the source installation, so it no longer appears in the list. In that case, plan and confirm with `--installation <uuid>`, using the uuid from the earlier plan. A named installation always takes precedence over the active one.
60
+
61
+ `reinstall` always prints JSON. A refusal prints `{"status": "refused", "code": …}` and exits 1. A failed replacement exits 1, and API errors use the CLI's usual codes: 2 for a 4xx, 3 for a 5xx and 4 for a network error. Plan receipts hold only ids, the planned URLs and a timestamp. They are stored in `~/.fluid/mist/reinstall-plans/`.
62
+
63
+ ## Development
64
+
65
+ ```bash
66
+ pnpm nx run-many -t test,typecheck,lint,build -p @fluid-app/fluid-cli-mist
67
+ ```
68
+
69
+ Shared Mist logic (lifecycle URLs, Droplet repair planning, replacement rules, polling, secret generation) lives in the private `@fluid-app/mist-core` package. The build bundles it into this plugin.
package/dist/index.d.mts CHANGED
@@ -138,6 +138,8 @@ interface DropletRecord {
138
138
  uuid: string;
139
139
  name: string;
140
140
  embed_url?: string | null;
141
+ install_webhook_url?: string | null;
142
+ uninstall_webhook_url?: string | null;
141
143
  }
142
144
  interface DropletCreateResponse {
143
145
  droplet: DropletRecord;
@@ -181,6 +183,10 @@ interface DropletInstallation {
181
183
  uuid?: string;
182
184
  /** The installed droplet's drp_ uuid. */
183
185
  droplet_uuid?: string;
186
+ active?: boolean;
187
+ /** Read by the reinstall plan to report what the backend preserves. */
188
+ scopes?: string[];
189
+ role_id?: string | number | null;
184
190
  }
185
191
  interface DropletInstallationsListResponse {
186
192
  droplet_installations?: DropletInstallation[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/index.ts"],"mappings":"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"}