@wix/himalaya-cli 0.916.0 → 0.917.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/dist/cli.mjs CHANGED
@@ -50953,6 +50953,21 @@ var ServeCliClient = class {
50953
50953
  revoke(app, integrity2, unrevoke = false) {
50954
50954
  return this.request("control", "POST", `/v1/admin/${unrevoke ? "unrevoke" : "revoke"}`, { body: { app, integrity: integrity2 }, headers: this.ctrlHeaders() });
50955
50955
  }
50956
+ /**
50957
+ * OPERATOR-ONLY: bind already-published slugs to an account that never claimed them
50958
+ * (POST /v1/admin/registry/backfill).
50959
+ *
50960
+ * `apply` defaults to false and the route rehearses unless it is exactly `true` — there is no
50961
+ * undo (the ownership store exposes no delete or transfer, and `claim` never reassigns), so
50962
+ * the safe outcome is the one you get by forgetting the flag. Omitting `slugs` backfills every
50963
+ * app the release store lists, bounded server-side.
50964
+ */
50965
+ backfillOwnership(subject, slugs, apply) {
50966
+ return this.request("control", "POST", "/v1/admin/registry/backfill", {
50967
+ body: { subject, ...slugs ? { slugs } : {}, ...apply ? { apply: true } : {} },
50968
+ headers: this.ctrlHeaders()
50969
+ });
50970
+ }
50956
50971
  /**
50957
50972
  * Withdraw an app from the serve plane entirely (POST /v1/admin/release/remove).
50958
50973
  *
@@ -106,6 +106,39 @@ template with no current release, or a release with no bundles, is **refused** r
106
106
  reported as a successful revocation — a kill-switch that silently switched nothing off is the
107
107
  one failure mode worth being loud about.
108
108
 
109
+ ### Attributing already-published apps (operator only)
110
+
111
+ Publishing a release and owning the slug are two different writes, and they have not always
112
+ coincided. A self-serve `himi push` claims the slug for you today, but an app published before
113
+ auto-claiming existed — or published by an operator or CI credential, whose scope already covers
114
+ the slug so it claims nothing on anyone's behalf — has a live release and **no owner**. That owner cannot
115
+ fix it themselves either: `claim` refuses a slug that is already published. `apps backfill` is
116
+ the operator door that binds those slugs to the account that should have them:
117
+
118
+ ```
119
+ himi-serve apps backfill --subject <accountGuid> --target bo --control-token "$TOK"
120
+ himi-serve apps backfill --subject <accountGuid> --slugs todo,notes --apply --target bo --control-token "$TOK"
121
+ ```
122
+
123
+ **It rehearses unless you pass `--apply`, and there is no undo.** The ownership store has no
124
+ delete and no transfer, and `claim` never reassigns — so a slug bound to the wrong subject stays
125
+ bound, and its real owner gets `slug_taken` from then on. The safe outcome is therefore the one
126
+ you get by forgetting a flag: without `--apply` the route reports exactly what it *would* claim
127
+ and writes nothing. Omitting `--slugs` means every app the release store lists (bounded
128
+ server-side); an empty or valueless `--slugs` is refused rather than read as "everything", and so
129
+ is any argument the command does not recognise — a stray word or a mistyped flag is usually a
130
+ `--slugs` that went missing, and missing is the spelling that means every app.
131
+
132
+ It bypasses exactly one refusal — `slug_published` — and keeps every other: reserved names
133
+ (`wix-*`, `himi-template-*`, the platform names) stay unclaimable, an app someone else already
134
+ owns is reported `slug_taken` rather than moved, and a slug nothing has published is reported
135
+ `not_published` rather than reserved. The backfilled claims do not spend the owner's own
136
+ self-serve quota.
137
+
138
+ The route (`POST /v1/admin/registry/backfill`) is gated on **scope, not role**: a self-serve or
139
+ narrower-than-`*` credential is refused `operator_only_backfill`, which means no cookie caller
140
+ can reach it. That is the difference between a backfill and a land-grab.
141
+
109
142
  ### Registry visibility (public | unlisted)
110
143
 
111
144
  Whether `GET /v1/apps` (and so the **Himi Player picker**) lists the app is a per-app,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.916.0",
3
+ "version": "0.917.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -64,5 +64,5 @@
64
64
  "artifactId": "himalaya-cli"
65
65
  }
66
66
  },
67
- "falconPackageHash": "06722d722ae5e9aac6226d4368df1778666b7b83737f0c449a0af142"
67
+ "falconPackageHash": "7152abeca53488631b587df6f4efc519c4be90f5ad95fb10c94ee27e"
68
68
  }