@substrat-run/cli 0.7.0 → 0.9.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.js CHANGED
@@ -25,7 +25,8 @@ import { printVersions } from './versions.js';
25
25
  import { promote } from './promote.js';
26
26
  import { setListing, requestPublish } from './listing.js';
27
27
  import { fetchWhoami } from './whoami.js';
28
- import { pullScope, restoreScope, resolveTenantId } from './scope.js';
28
+ import { pullScope, restoreScope, resolveTenantId, adoptScopeServing, adoptVerticalServing } from './scope.js';
29
+ import { listVerticalHostnames, bindSurfaceHostname, unbindHostname, formatHostnames } from './hostnames.js';
29
30
  const argv = process.argv.slice(2);
30
31
  /** `--name value` → value, else undefined. */
31
32
  function flag(name) {
@@ -69,6 +70,18 @@ Usage:
69
70
  load a backup into an existing hosted scope,
70
71
  REPLACING its data (a pull's .sqlite, a local
71
72
  adapter-sqlite scope file, or a .dump.json)
73
+ substrat scope adopt-serving <scopeId> migrate a legacy scope onto its vertical's
74
+ stable serving script so promotes stop
75
+ stranding its data (idempotent). Use
76
+ --vertical <slug> to backfill every scope.
77
+ substrat hostnames <slug> list an install's hostname bindings
78
+ substrat hostnames bind <slug> --surface <s> [--domain <d>] [--scope <id>]
79
+ give a surface a URL: no --domain mints a
80
+ platform hostname (live immediately);
81
+ --domain records a custom domain (pending
82
+ until DNS validation completes)
83
+ substrat hostnames unbind <hostname> remove a binding (the surface's canonical
84
+ flag moves only when you bind a new one)
72
85
 
73
86
  'substrat push' defaults everything from the vertical's package.json — run it from inside the
74
87
  directory with no flags. Override any of: --slug, --name, --version. The slug/name come from a
@@ -206,26 +219,37 @@ async function cmdPush() {
206
219
  }
207
220
  const { controlPlaneUrl, header, as } = auth;
208
221
  console.log(`authenticating with ${as}`);
209
- // Version defaults to the registry's latest, patch-bumped — no hand-tracking. --version wins.
210
- const version = flag('version') ?? (await nextVersion(controlPlaneUrl, header, slug, meta.versionSeed));
222
+ // Version defaults to the registry's latest, patch-bumped — no hand-tracking. --version
223
+ // wins. A pinned push may land on `<tenant>/<slug>` or a legacy bare row the pin owns,
224
+ // so both lineages feed the bump (nextVersion takes the max across them).
225
+ const versionSlugs = tenant ? [`${tenant}/${slug}`, slug] : [slug];
226
+ const version = flag('version') ?? (await nextVersion(controlPlaneUrl, header, versionSlugs, meta.versionSeed));
211
227
  console.log(`pushing ${tenant ? `${tenant}/` : ''}${slug}@${version}${name && name !== slug ? ` (${name})` : ''} …`);
212
228
  const v = await push({
213
- dir, slug, version, name,
229
+ dir, slug, version, name, tenant,
214
230
  envSpec: meta.envSpec,
215
231
  ownerGrants: meta.ownerGrants,
216
232
  entitlements: meta.entitlements,
217
233
  provides: meta.provides,
218
234
  requires: meta.requires,
235
+ surfaces: meta.surfaces,
219
236
  controlPlaneUrl, authHeader: header,
220
237
  });
221
- console.log(`✓ pushed. version ${v.id} (${version}) is ${v.admission}; deploymentRef=${v.deploymentRef}`);
238
+ console.log(`✓ pushed ${v.verticalSlug ?? slug}. version ${v.id} (${version}) is ${v.admission}; deploymentRef=${v.deploymentRef}`);
239
+ // Advisory, same spirit as the permission-surface gate: a bound surface the new
240
+ // version stopped declaring keeps serving, but probably not what its users expect.
241
+ for (const w of v.warnings ?? [])
242
+ console.warn(`⚠ ${w}`);
222
243
  // `--promote <channel>` completes the deploy in the same run — the merge-to-main
223
244
  // workflow's shape. A private vertical's push is already admitted, so this succeeds
224
245
  // immediately; a listed vertical's lands pending and the refusal below names why.
246
+ // Addressed by the REGISTRY id the deploy actually landed on (`verticalSlug`), not the
247
+ // bare name — for staff the two differ, and effectiveSlug keeps the full id valid for
248
+ // builders too.
225
249
  const promoteTo = flag('promote');
226
250
  if (promoteTo) {
227
- const ch = await promote({ controlPlaneUrl, header, slug, channel: promoteTo, versionId: v.id });
228
- console.log(`✓ ${slug} → ${ch.channel} now points at ${version}`);
251
+ const ch = await promote({ controlPlaneUrl, header, slug: v.verticalSlug ?? slug, channel: promoteTo, versionId: v.id });
252
+ console.log(`✓ ${v.verticalSlug ?? slug} → ${ch.channel} now points at ${version}`);
229
253
  }
230
254
  else if (v.admission === 'admitted') {
231
255
  console.log(' promote it to a channel to go live (or push with --promote prod).');
@@ -288,14 +312,32 @@ async function cmdScope() {
288
312
  const sub = argv[1];
289
313
  const scope = argv[2];
290
314
  const usage = 'usage: substrat scope pull <scopeId> [--full] [--out <dir>] [--tenant <id-or-slug>]\n' +
291
- ' substrat scope restore <scopeId> --file <backup.sqlite|.dump.json> [--tenant <id-or-slug>]';
292
- if ((sub !== 'pull' && sub !== 'restore') || !scope || scope.startsWith('--')) {
315
+ ' substrat scope restore <scopeId> --file <backup.sqlite|.dump.json> [--tenant <id-or-slug>]\n' +
316
+ ' substrat scope adopt-serving <scopeId> [--tenant <id-or-slug>]\n' +
317
+ ' substrat scope adopt-serving --vertical <slug>';
318
+ const known = sub === 'pull' || sub === 'restore' || sub === 'adopt-serving';
319
+ // adopt-serving --vertical takes no positional scopeId; every other form requires one.
320
+ const wantsScope = !(sub === 'adopt-serving' && flag('vertical'));
321
+ if (!known || (wantsScope && (!scope || scope.startsWith('--')))) {
293
322
  console.error(usage);
294
323
  process.exit(1);
295
324
  }
296
325
  const { controlPlaneUrl, header, as } = resolveAuth({ cp: flag('cp'), token: flag('token'), tenant: flag('tenant') });
297
326
  console.log(`authenticating with ${as}`);
327
+ if (sub === 'adopt-serving' && flag('vertical')) {
328
+ await adoptVerticalServing({ controlPlaneUrl, header, slug: flag('vertical') });
329
+ return;
330
+ }
331
+ // Past the vertical-wide branch, every form needs a scopeId (the guard above enforced it).
332
+ if (!scope) {
333
+ console.error(usage);
334
+ process.exit(1);
335
+ }
298
336
  const tenantId = await resolveTenantId(controlPlaneUrl, header, flag('tenant') ?? process.env.SUBSTRAT_TENANT ?? loadConfig().defaultTenant);
337
+ if (sub === 'adopt-serving') {
338
+ await adoptScopeServing({ controlPlaneUrl, header, tenantId, scopeId: scope });
339
+ return;
340
+ }
299
341
  if (sub === 'restore') {
300
342
  const file = flag('file');
301
343
  if (!file) {
@@ -314,6 +356,61 @@ async function cmdScope() {
314
356
  outDir: flag('out') ?? '.substrat',
315
357
  });
316
358
  }
359
+ /**
360
+ * Surface hostname bindings (K-26 multi-surface — the CLI half of the dashboard's
361
+ * Domains tab). Tenant-narrowed server-side: a builder session or push token reaches
362
+ * only its own workspace's rows; staff pass --tenant to act for one.
363
+ */
364
+ async function cmdHostnames() {
365
+ const sub = argv[1];
366
+ const usage = 'usage: substrat hostnames <slug> [--tenant <id-or-slug>]\n' +
367
+ ' substrat hostnames bind <slug> --surface <s> [--domain <d>] [--scope <id>] [--tenant <t>]\n' +
368
+ ' substrat hostnames unbind <hostname> [--tenant <t>]';
369
+ const { controlPlaneUrl, header, as } = resolveAuth({ cp: flag('cp'), token: flag('token'), tenant: flag('tenant') });
370
+ if (sub === 'unbind') {
371
+ const hostname = argv[2];
372
+ if (!hostname || hostname.startsWith('--')) {
373
+ console.error(usage);
374
+ process.exit(1);
375
+ }
376
+ console.log(`authenticating with ${as}`);
377
+ await unbindHostname(controlPlaneUrl, header, hostname);
378
+ console.log(`✓ ${hostname.toLowerCase()} unbound — requests to it stop resolving`);
379
+ return;
380
+ }
381
+ const slug = sub === 'bind' ? argv[2] : sub;
382
+ if (!slug || slug.startsWith('--')) {
383
+ console.error(usage);
384
+ process.exit(1);
385
+ }
386
+ console.log(`authenticating with ${as}`);
387
+ const tenantId = await resolveTenantId(controlPlaneUrl, header, flag('tenant') ?? process.env.SUBSTRAT_TENANT ?? loadConfig().defaultTenant);
388
+ if (sub === 'bind') {
389
+ const surface = flag('surface');
390
+ if (!surface) {
391
+ console.error(usage);
392
+ process.exit(1);
393
+ }
394
+ const domain = flag('domain');
395
+ const bound = await bindSurfaceHostname({
396
+ controlPlaneUrl, header, tenantId, slug, surface,
397
+ ...(domain ? { domain } : {}),
398
+ ...(flag('scope') ? { scope: flag('scope') } : {}),
399
+ });
400
+ if (bound.status === 'active') {
401
+ console.log(`✓ https://${bound.hostname} serves surface '${surface}'`);
402
+ }
403
+ else {
404
+ console.log(`✓ ${bound.hostname} recorded (${bound.status}) for surface '${surface}'`);
405
+ console.log(' it goes live once DNS validation and certificate issuance complete');
406
+ }
407
+ return;
408
+ }
409
+ const rows = await listVerticalHostnames(controlPlaneUrl, header, tenantId, slug);
410
+ console.log(formatHostnames(rows));
411
+ if (rows.some((r) => r.canonical))
412
+ console.log('\n* = canonical for its (scope, surface)');
413
+ }
317
414
  async function cmdWhoami() {
318
415
  const { controlPlaneUrl, header } = resolveAuth({ cp: flag('cp'), token: flag('token'), tenant: flag('tenant') });
319
416
  const { user, tenants } = await fetchWhoami(controlPlaneUrl, header);
@@ -347,6 +444,8 @@ async function main() {
347
444
  return cmdWhoami();
348
445
  case 'scope':
349
446
  return cmdScope();
447
+ case 'hostnames':
448
+ return cmdHostnames();
350
449
  case 'help':
351
450
  case '--help':
352
451
  case '-h':
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * `substrat hostnames` — the CLI half of surface hostname binding (K-26 multi-surface;
3
+ * control-plane.md §4.7). One scope can front several apps; the hostname decides which
4
+ * surface the vertical serves (`readRoutedNode(...).surface`). The dashboard's Domains
5
+ * tab is the interactive path; this is CI-and-support parity over the same tenant-
6
+ * narrowed control-plane routes (a builder session reaches only its own tenant's rows).
7
+ *
8
+ * A PLATFORM hostname is minted from the install's own default label —
9
+ * `crm.global.substrat.run` + surface `eka` → `crm-eka.global.substrat.run` — and is
10
+ * live immediately (it rides the wildcard cert). A CUSTOM domain lands `pending` and
11
+ * walks the §4.2 DNS-validation lifecycle.
12
+ */
13
+ /** One binding row as the control plane returns it (contracts' HostnameBinding). */
14
+ export interface HostnameRow {
15
+ hostname: string;
16
+ tenantId: string;
17
+ scopeId: string;
18
+ verticalSlug: string | null;
19
+ surface: string;
20
+ status: string;
21
+ statusNote: string | null;
22
+ canonical: boolean;
23
+ createdAt: string;
24
+ }
25
+ /** The tenant's bindings for one vertical — matched bare or `<tenant>/<slug>`-prefixed. */
26
+ export declare function listVerticalHostnames(controlPlaneUrl: string, header: Record<string, string>, tenantId: string, slug: string): Promise<HostnameRow[]>;
27
+ /**
28
+ * Bind a hostname to one surface of an install. The install is addressed by its
29
+ * vertical slug; the scope is found through the bindings that already exist (every
30
+ * install got a default hostname at provisioning) — several installs of the same
31
+ * vertical need an explicit `--scope`.
32
+ */
33
+ export declare function bindSurfaceHostname(opts: {
34
+ controlPlaneUrl: string;
35
+ header: Record<string, string>;
36
+ tenantId: string;
37
+ slug: string;
38
+ surface: string;
39
+ /** A custom domain to bind; omitted ⇒ mint a platform hostname for the surface. */
40
+ domain?: string;
41
+ /** Disambiguates when the tenant runs several installs of the vertical. */
42
+ scope?: string;
43
+ }): Promise<{
44
+ hostname: string;
45
+ status: string;
46
+ canonical: boolean;
47
+ }>;
48
+ /** Unbind one hostname. Tenant-narrowed server-side: a foreign hostname is a 404. */
49
+ export declare function unbindHostname(controlPlaneUrl: string, header: Record<string, string>, hostname: string): Promise<void>;
50
+ /** Render bindings as the aligned table `substrat hostnames <slug>` prints. */
51
+ export declare function formatHostnames(rows: HostnameRow[]): string;
52
+ //# sourceMappingURL=hostnames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostnames.d.ts","sourceRoot":"","sources":["../src/hostnames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD,2FAA2F;AAC3F,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,EAAE,CAAC,CAIxB;AAKD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAoDpE;AAED,qFAAqF;AACrF,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAa3D"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * `substrat hostnames` — the CLI half of surface hostname binding (K-26 multi-surface;
3
+ * control-plane.md §4.7). One scope can front several apps; the hostname decides which
4
+ * surface the vertical serves (`readRoutedNode(...).surface`). The dashboard's Domains
5
+ * tab is the interactive path; this is CI-and-support parity over the same tenant-
6
+ * narrowed control-plane routes (a builder session reaches only its own tenant's rows).
7
+ *
8
+ * A PLATFORM hostname is minted from the install's own default label —
9
+ * `crm.global.substrat.run` + surface `eka` → `crm-eka.global.substrat.run` — and is
10
+ * live immediately (it rides the wildcard cert). A CUSTOM domain lands `pending` and
11
+ * walks the §4.2 DNS-validation lifecycle.
12
+ */
13
+ async function request(url, header, init) {
14
+ const res = await fetch(url, { ...init, headers: { 'content-type': 'application/json', ...header } });
15
+ const body = await res.text();
16
+ if (!res.ok) {
17
+ let message = body;
18
+ try {
19
+ message = JSON.parse(body).error ?? body;
20
+ }
21
+ catch {
22
+ // Not JSON — the raw body is the message.
23
+ }
24
+ throw new Error(`${res.status}: ${message}`);
25
+ }
26
+ return JSON.parse(body);
27
+ }
28
+ /** The tenant's bindings for one vertical — matched bare or `<tenant>/<slug>`-prefixed. */
29
+ export async function listVerticalHostnames(controlPlaneUrl, header, tenantId, slug) {
30
+ const base = controlPlaneUrl.replace(/\/$/, '');
31
+ const rows = await request(`${base}/hostnames?tenantId=${encodeURIComponent(tenantId)}`, header);
32
+ return rows.filter((h) => h.verticalSlug === slug || (h.verticalSlug ?? '').endsWith(`/${slug}`));
33
+ }
34
+ const slugifyLabel = (name) => name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'surface';
35
+ /**
36
+ * Bind a hostname to one surface of an install. The install is addressed by its
37
+ * vertical slug; the scope is found through the bindings that already exist (every
38
+ * install got a default hostname at provisioning) — several installs of the same
39
+ * vertical need an explicit `--scope`.
40
+ */
41
+ export async function bindSurfaceHostname(opts) {
42
+ const base = opts.controlPlaneUrl.replace(/\/$/, '');
43
+ const rows = await listVerticalHostnames(opts.controlPlaneUrl, opts.header, opts.tenantId, opts.slug);
44
+ const scopes = [...new Set(rows.map((h) => h.scopeId))];
45
+ const scopeId = opts.scope ?? (scopes.length === 1 ? scopes[0] : undefined);
46
+ if (!scopeId) {
47
+ if (scopes.length === 0) {
48
+ throw new Error(`no install of '${opts.slug}' has a hostname in this workspace — is it provisioned?`);
49
+ }
50
+ throw new Error(`'${opts.slug}' runs in several scopes — pass --scope <id>:\n ${scopes.join('\n ')}`);
51
+ }
52
+ const own = rows.filter((h) => h.scopeId === scopeId);
53
+ // First binding for a (scope, surface) is canonical; later ones are aliases —
54
+ // adding never silently demotes the URL a surface already serves on.
55
+ const canonical = !own.some((h) => h.surface === opts.surface);
56
+ const bind = (hostname) => request(`${base}/hostnames`, opts.header, {
57
+ method: 'POST',
58
+ body: JSON.stringify({ hostname, tenantId: opts.tenantId, scopeId, surface: opts.surface, canonical }),
59
+ });
60
+ if (opts.domain) {
61
+ const bound = await bind(opts.domain.toLowerCase());
62
+ return { hostname: bound.hostname, status: bound.status, canonical };
63
+ }
64
+ // Platform mint: the install's default label + the surface, on the same base domain.
65
+ const source = own.find((h) => h.canonical && h.surface === 'app') ?? own.find((h) => h.canonical) ?? own[0];
66
+ if (!source || !source.hostname.includes('.')) {
67
+ throw new Error(`no platform hostname to derive from — bind a --domain instead`);
68
+ }
69
+ const [label, ...rest] = source.hostname.split('.');
70
+ const candidates = [
71
+ `${label}-${slugifyLabel(opts.surface)}`,
72
+ `${label}-${slugifyLabel(opts.surface)}-${scopeId.toLowerCase().slice(-4)}`,
73
+ ].map((l) => `${l}.${rest.join('.')}`);
74
+ let lastError;
75
+ for (const hostname of candidates) {
76
+ try {
77
+ await bind(hostname);
78
+ await request(`${base}/hostnames/${encodeURIComponent(hostname)}/status`, opts.header, {
79
+ method: 'PATCH',
80
+ body: JSON.stringify({ status: 'active' }),
81
+ });
82
+ return { hostname, status: 'active', canonical };
83
+ }
84
+ catch (e) {
85
+ lastError = e instanceof Error ? e : new Error(String(e)); // collision — try the tailed label
86
+ }
87
+ }
88
+ throw lastError ?? new Error('could not bind a platform hostname');
89
+ }
90
+ /** Unbind one hostname. Tenant-narrowed server-side: a foreign hostname is a 404. */
91
+ export async function unbindHostname(controlPlaneUrl, header, hostname) {
92
+ const base = controlPlaneUrl.replace(/\/$/, '');
93
+ await request(`${base}/hostnames/${encodeURIComponent(hostname)}`, header, { method: 'DELETE' });
94
+ }
95
+ /** Render bindings as the aligned table `substrat hostnames <slug>` prints. */
96
+ export function formatHostnames(rows) {
97
+ if (rows.length === 0)
98
+ return '(no hostnames bound)';
99
+ const width = Math.max(...rows.map((h) => h.hostname.length));
100
+ return rows
101
+ .map((h) => [
102
+ h.hostname.padEnd(width),
103
+ h.surface.padEnd(12),
104
+ (h.canonical ? `${h.status} *` : h.status).padEnd(11),
105
+ h.scopeId,
106
+ ].join(' '))
107
+ .join('\n');
108
+ }
109
+ //# sourceMappingURL=hostnames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostnames.js","sourceRoot":"","sources":["../src/hostnames.ts"],"names":[],"mappings":"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"}
package/dist/push.d.ts CHANGED
@@ -1,4 +1,19 @@
1
- import { type RuntimeNeeds } from '@substrat-run/contracts';
1
+ import { type PermissionRegistry, type RuntimeNeeds } from '@substrat-run/contracts';
2
+ /**
3
+ * Read the vertical's generated permission registry (`permissions.json`), if present. The
4
+ * file is emitted and CI-checked by `tools/permission-diff.mts` from the same `MODULES` +
5
+ * `ROLES` + `ENTITY_GRANTS` the host registers, so it cannot drift from what is enforced —
6
+ * and reading a checked-in artifact means `push` never has to load (and execute) the
7
+ * vertical's module code. Absent ⇒ the vertical ships no permission surface here.
8
+ */
9
+ export declare function readRegistry(dir: string): PermissionRegistry | undefined;
10
+ /**
11
+ * The permission digest (D-39): a content hash of the vertical's declared permission
12
+ * surface — what the promotion checkpoint compares to fire "permissions changed". Over the
13
+ * empty surface when no registry ships, so the value is always meaningful (never the old
14
+ * placeholder that hashed the worker's bindings and moved on unrelated changes).
15
+ */
16
+ export declare function permissionDigest(registry: PermissionRegistry | undefined): Promise<string>;
2
17
  /**
3
18
  * The Substrat→Cloudflare mapping (D-38): derive the wrangler config a `runtimeNeeds`
4
19
  * vertical never authors. The result feeds BOTH the bundler (written to disk, passed via
@@ -14,6 +29,15 @@ export interface PushOptions {
14
29
  slug: string;
15
30
  version: string;
16
31
  name?: string;
32
+ /**
33
+ * The workspace this push is FOR (the project pin — cli.ts resolves --tenant →
34
+ * SUBSTRAT_TENANT → package.json `substrat.tenant`). Sent with the bundle so the
35
+ * control plane can HONOR it regardless of who is authenticated: a builder session
36
+ * with a different workspace is refused (not silently redirected), and a staff
37
+ * session's claim lands as the pinned tenant's — prefixed and owned like the
38
+ * equivalent builder push — instead of platform-owned with the pin dropped.
39
+ */
40
+ tenant?: string;
17
41
  /** The vertical's declared env-spec (from package.json `substrat.envSpec`), carried to the
18
42
  * registry so the platform can render a config form for it. Validated control-plane-side. */
19
43
  envSpec?: readonly unknown[];
@@ -22,6 +46,9 @@ export interface PushOptions {
22
46
  entitlements?: readonly unknown[];
23
47
  provides?: readonly unknown[];
24
48
  requires?: readonly unknown[];
49
+ /** The surfaces the vertical serves (K-26), from package.json `substrat.surfaces` —
50
+ * labels only; buys the dashboard a hostname-binding picker + a push-time warning. */
51
+ surfaces?: readonly unknown[];
25
52
  controlPlaneUrl: string;
26
53
  /** The auth header to send — a bearer session or an x-service-token (see config.resolveAuth). */
27
54
  authHeader: Record<string, string>;
@@ -38,6 +65,8 @@ export declare function push(opts: PushOptions): Promise<{
38
65
  id: string;
39
66
  admission: string;
40
67
  deploymentRef: string;
68
+ verticalSlug: string;
69
+ warnings?: string[];
41
70
  }>;
42
71
  /** Push defaults read from a vertical's package.json, so `substrat push` needs no flags. */
43
72
  export interface VerticalMeta {
@@ -63,6 +92,8 @@ export interface VerticalMeta {
63
92
  entitlements: readonly unknown[] | undefined;
64
93
  provides: readonly unknown[] | undefined;
65
94
  requires: readonly unknown[] | undefined;
95
+ /** Declared surfaces (K-26), from package.json `substrat.surfaces`: `[{ name, label }]`. */
96
+ surfaces: readonly unknown[] | undefined;
66
97
  }
67
98
  /**
68
99
  * Derive push defaults from the vertical directory's package.json (the "it's already in
@@ -84,6 +115,11 @@ export declare function pinTenant(dir: string, tenant: string): void;
84
115
  * builder never hand-tracks the number. Falls back to the package.json seed (or `0.0.1`) for
85
116
  * the first push of a slug the registry has never seen. A non-semver latest is bumped as-is
86
117
  * would be wrong, so those are skipped when finding the max.
118
+ *
119
+ * Takes CANDIDATE slugs because the caller may not know the registry id its push will
120
+ * land on: a pinned push claims `<tenantSlug>/<slug>` in general but a legacy bare row
121
+ * owned by the pin stays bare — so cli.ts asks for both and the max across them wins
122
+ * (they are the same lineage; at most one exists in practice).
87
123
  */
88
- export declare function nextVersion(controlPlaneUrl: string, header: Record<string, string>, slug: string, seed: string | undefined): Promise<string>;
124
+ export declare function nextVersion(controlPlaneUrl: string, header: Record<string, string>, slugs: readonly string[], seed: string | undefined): Promise<string>;
89
125
  //# sourceMappingURL=push.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAejC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB9E;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAWtE;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;kGAC8F;IAC9F,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,kGAAkG;IAClG,WAAW,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,iGAAiG;IACjG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAwG/G;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,iHAAiH;IACjH,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mFAAmF;IACnF,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;8FAC0F;IAC1F,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IACxC,iHAAiH;IACjH,WAAW,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IAC5C,YAAY,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CA0B1D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAO3D;AAUD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAAC,MAAM,CAAC,CAYjB"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
package/dist/push.js CHANGED
@@ -3,11 +3,49 @@ import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSy
3
3
  import { tmpdir } from 'node:os';
4
4
  import { join, basename } from 'node:path';
5
5
  import { webcrypto } from 'node:crypto';
6
- import { deployManifest, runtimeNeeds, RUNTIME_BASELINE, } from '@substrat-run/contracts';
6
+ import { deployManifest, permissionRegistry, runtimeNeeds, RUNTIME_BASELINE, } from '@substrat-run/contracts';
7
7
  async function sha256(bytes) {
8
8
  const digest = await webcrypto.subtle.digest('SHA-256', bytes);
9
9
  return Buffer.from(digest).toString('hex').slice(0, 32);
10
10
  }
11
+ /** Deterministic JSON: object keys sorted recursively, array order preserved. Makes the
12
+ * permission digest a pure function of registry CONTENT — independent of the artifact's
13
+ * on-disk key order or formatting. */
14
+ function stableStringify(v) {
15
+ if (Array.isArray(v))
16
+ return `[${v.map(stableStringify).join(',')}]`;
17
+ if (v && typeof v === 'object') {
18
+ const o = v;
19
+ return `{${Object.keys(o)
20
+ .sort()
21
+ .map((k) => `${JSON.stringify(k)}:${stableStringify(o[k])}`)
22
+ .join(',')}}`;
23
+ }
24
+ return JSON.stringify(v);
25
+ }
26
+ const EMPTY_REGISTRY = { permissions: [], roles: [], entityGrants: [] };
27
+ /**
28
+ * Read the vertical's generated permission registry (`permissions.json`), if present. The
29
+ * file is emitted and CI-checked by `tools/permission-diff.mts` from the same `MODULES` +
30
+ * `ROLES` + `ENTITY_GRANTS` the host registers, so it cannot drift from what is enforced —
31
+ * and reading a checked-in artifact means `push` never has to load (and execute) the
32
+ * vertical's module code. Absent ⇒ the vertical ships no permission surface here.
33
+ */
34
+ export function readRegistry(dir) {
35
+ const path = join(dir, 'permissions.json');
36
+ if (!existsSync(path))
37
+ return undefined;
38
+ return permissionRegistry.parse(JSON.parse(readFileSync(path, 'utf8')));
39
+ }
40
+ /**
41
+ * The permission digest (D-39): a content hash of the vertical's declared permission
42
+ * surface — what the promotion checkpoint compares to fire "permissions changed". Over the
43
+ * empty surface when no registry ships, so the value is always meaningful (never the old
44
+ * placeholder that hashed the worker's bindings and moved on unrelated changes).
45
+ */
46
+ export async function permissionDigest(registry) {
47
+ return sha256(Buffer.from(stableStringify(registry ?? EMPTY_REGISTRY)));
48
+ }
11
49
  /** A tiny JSONC reader: strip // and block comments, then JSON.parse. */
12
50
  function readJsonc(path) {
13
51
  const raw = readFileSync(path, 'utf8')
@@ -113,6 +151,9 @@ export async function push(opts) {
113
151
  throw new Error(`no built module found in ${out}`);
114
152
  const modules = files.map((f) => ({ name: f, content: readFileSync(join(out, f)) }));
115
153
  const concat = Buffer.concat(modules.map((m) => m.content));
154
+ // The declared permission surface (D-39), read from the checked-in artifact — shipped in
155
+ // the manifest and hashed into digests.permission below.
156
+ const registry = readRegistry(opts.dir);
116
157
  // Parsed with the SAME schema the control plane applies at the trust boundary
117
158
  // (contracts' deployManifest, re-parsed server-side in control-plane-api). Drift
118
159
  // between what the CLI builds and what the server accepts fails here, before the
@@ -135,18 +176,26 @@ export async function push(opts) {
135
176
  ...(opts.entitlements ? { entitlements: opts.entitlements } : {}),
136
177
  ...(opts.provides ? { provides: opts.provides } : {}),
137
178
  ...(opts.requires ? { requires: opts.requires } : {}),
179
+ ...(opts.surfaces ? { surfaces: opts.surfaces } : {}),
180
+ // The declared permission surface travels with the bundle (D-39): keys+descriptions,
181
+ // role templates, entity-grant shapes. Its content hash is digests.permission.
182
+ ...(registry ? { registry } : {}),
138
183
  digests: {
139
184
  manifest: await sha256(concat),
140
- permission: await sha256(Buffer.from(JSON.stringify(bindings))),
185
+ permission: await permissionDigest(registry),
141
186
  migration: await sha256(Buffer.from(JSON.stringify(doClasses))),
142
187
  },
143
188
  });
144
189
  const form = new FormData();
145
190
  form.set('manifest', JSON.stringify(manifest));
191
+ // The workspace pin rides WITH the push (not in the manifest — it is addressing, not
192
+ // code, so it stays out of every digest). The control plane honors or refuses it.
193
+ if (opts.tenant)
194
+ form.set('tenant', opts.tenant);
146
195
  for (const m of modules) {
147
196
  form.set(m.name, new Blob([m.content], { type: 'application/javascript+module' }), m.name);
148
197
  }
149
- const url = `${opts.controlPlaneUrl}/verticals/${opts.slug}/deploy`;
198
+ const url = `${opts.controlPlaneUrl}/verticals/${encodeURIComponent(opts.slug)}/deploy`;
150
199
  console.log(`uploading ${entry} (+${modules.length - 1} modules) → ${url}`);
151
200
  const res = await fetch(url, {
152
201
  method: 'POST',
@@ -188,6 +237,7 @@ export function readVerticalMeta(dir) {
188
237
  entitlements: s?.entitlements,
189
238
  provides: s?.provides,
190
239
  requires: s?.requires,
240
+ surfaces: s?.surfaces,
191
241
  };
192
242
  }
193
243
  /**
@@ -216,17 +266,24 @@ function isNewer(a, b) {
216
266
  * builder never hand-tracks the number. Falls back to the package.json seed (or `0.0.1`) for
217
267
  * the first push of a slug the registry has never seen. A non-semver latest is bumped as-is
218
268
  * would be wrong, so those are skipped when finding the max.
269
+ *
270
+ * Takes CANDIDATE slugs because the caller may not know the registry id its push will
271
+ * land on: a pinned push claims `<tenantSlug>/<slug>` in general but a legacy bare row
272
+ * owned by the pin stays bare — so cli.ts asks for both and the max across them wins
273
+ * (they are the same lineage; at most one exists in practice).
219
274
  */
220
- export async function nextVersion(controlPlaneUrl, header, slug, seed) {
275
+ export async function nextVersion(controlPlaneUrl, header, slugs, seed) {
221
276
  const base = controlPlaneUrl.replace(/\/$/, '');
222
- const versions = await fetch(`${base}/verticals/${encodeURIComponent(slug)}/versions`, { headers: header })
223
- .then((r) => (r.ok ? r.json() : []))
224
- .catch(() => []);
225
277
  let best = null;
226
- for (const v of versions) {
227
- const t = parseSemver(v.version);
228
- if (t && (!best || isNewer(t, best)))
229
- best = t;
278
+ for (const slug of slugs) {
279
+ const versions = await fetch(`${base}/verticals/${encodeURIComponent(slug)}/versions`, { headers: header })
280
+ .then((r) => (r.ok ? r.json() : []))
281
+ .catch(() => []);
282
+ for (const v of versions) {
283
+ const t = parseSemver(v.version);
284
+ if (t && (!best || isNewer(t, best)))
285
+ best = t;
286
+ }
230
287
  }
231
288
  if (best)
232
289
  return `${best[0]}.${best[1]}.${best[2] + 1}`;
package/dist/push.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
package/dist/scope.d.ts CHANGED
@@ -23,4 +23,25 @@ export declare function restoreScope(opts: {
23
23
  scopeId: string;
24
24
  file: string;
25
25
  }): Promise<void>;
26
+ /**
27
+ * `substrat scope adopt-serving <scopeId>` — the builder-triggerable backfill (#286/#321):
28
+ * move a LEGACY scope's data off its per-version dispatch script onto its vertical's stable
29
+ * serving script, so a promote stops re-stranding it. Idempotent: an already-adopted scope
30
+ * reports so and does nothing. Server-side is the gate (staff/owner, audited).
31
+ */
32
+ export declare function adoptScopeServing(opts: {
33
+ controlPlaneUrl: string;
34
+ header: Record<string, string>;
35
+ tenantId: string;
36
+ scopeId: string;
37
+ }): Promise<void>;
38
+ /**
39
+ * `substrat scope adopt-serving --vertical <slug>` — backfill EVERY still-legacy scope of a
40
+ * vertical in one call. The whole-install migration a promote-per-scope would be tedious for.
41
+ */
42
+ export declare function adoptVerticalServing(opts: {
43
+ controlPlaneUrl: string;
44
+ header: Record<string, string>;
45
+ slug: string;
46
+ }): Promise<void>;
26
47
  //# sourceMappingURL=scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAmCA,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,MAAM,CAAC,CAajB;AAiCD,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB;AAgCD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAmCA,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,MAAM,CAAC,CAajB;AAiCD,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB;AAgCD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB"}
package/dist/scope.js CHANGED
@@ -155,4 +155,43 @@ export async function restoreScope(opts) {
155
155
  console.log(`✓ restored ${tables.length} tables (${rows} rows) into scope ${opts.scopeId}`);
156
156
  console.log(' the scope now serves the backup — its previous data was replaced.');
157
157
  }
158
+ /**
159
+ * `substrat scope adopt-serving <scopeId>` — the builder-triggerable backfill (#286/#321):
160
+ * move a LEGACY scope's data off its per-version dispatch script onto its vertical's stable
161
+ * serving script, so a promote stops re-stranding it. Idempotent: an already-adopted scope
162
+ * reports so and does nothing. Server-side is the gate (staff/owner, audited).
163
+ */
164
+ export async function adoptScopeServing(opts) {
165
+ const res = await fetch(`${opts.controlPlaneUrl}/tenants/${encodeURIComponent(opts.tenantId)}` +
166
+ `/scopes/${encodeURIComponent(opts.scopeId)}/adopt-serving`, { method: 'POST', headers: { ...opts.header, 'content-type': 'application/json' } });
167
+ if (!res.ok) {
168
+ const body = (await res.json().catch(() => null));
169
+ throw new Error(body?.error ?? `adopt-serving refused: ${res.status} ${res.statusText}`);
170
+ }
171
+ const body = (await res.json());
172
+ if (body.alreadyAdopted) {
173
+ console.log(`✓ scope ${opts.scopeId} already serves from ${body.servingRef} — nothing to do.`);
174
+ }
175
+ else {
176
+ console.log(`✓ adopted scope ${opts.scopeId} onto ${body.servingRef} (${body.tables ?? 0} tables moved).`);
177
+ }
178
+ }
179
+ /**
180
+ * `substrat scope adopt-serving --vertical <slug>` — backfill EVERY still-legacy scope of a
181
+ * vertical in one call. The whole-install migration a promote-per-scope would be tedious for.
182
+ */
183
+ export async function adoptVerticalServing(opts) {
184
+ const res = await fetch(`${opts.controlPlaneUrl}/verticals/${encodeURIComponent(opts.slug)}/adopt-serving`, { method: 'POST', headers: { ...opts.header, 'content-type': 'application/json' } });
185
+ const body = (await res.json().catch(() => null));
186
+ if (!res.ok) {
187
+ // A per-scope failure reports what it managed before stopping — a re-run resumes.
188
+ const done = (body?.adopted?.length ?? 0) + (body?.alreadyAdopted?.length ?? 0);
189
+ throw new Error(`${body?.error ?? `adopt-serving refused: ${res.status}`}${done ? ` (adopted ${done} before stopping)` : ''}`);
190
+ }
191
+ const adopted = body?.adopted ?? [];
192
+ const already = body?.alreadyAdopted ?? [];
193
+ console.log(`✓ ${opts.slug}: adopted ${adopted.length} scope(s), ${already.length} already on the serving script.`);
194
+ for (const s of adopted)
195
+ console.log(` + ${s}`);
196
+ }
158
197
  //# sourceMappingURL=scope.js.map
package/dist/scope.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../src/versions.ts"],"names":[],"mappings":"AA0BA,wBAAsB,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxH"}
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../src/versions.ts"],"names":[],"mappings":"AA6BA,wBAAsB,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDxH"}
package/dist/versions.js CHANGED
@@ -14,11 +14,27 @@ export async function printVersions(controlPlaneUrl, header, slug) {
14
14
  console.log(`no versions for '${slug}' (or they aren't visible to you).`);
15
15
  return;
16
16
  }
17
+ // A prod promote whose in-place serve failed leaves the channel pointing at the new
18
+ // version while the scopes still run the old one (#321). Report the SERVING truth, and
19
+ // flag the divergence, rather than labelling the promoted-but-not-live version 'prod'.
20
+ const prod = channels.find((c) => c.channel === 'prod');
21
+ const serving = prod?.servingVersionId ?? null;
22
+ const stalled = prod && serving !== null && serving !== prod.versionId;
17
23
  const byVersion = new Map();
24
+ const tag = (versionId, label) => {
25
+ const list = byVersion.get(versionId) ?? [];
26
+ list.push(label);
27
+ byVersion.set(versionId, list);
28
+ };
18
29
  for (const c of channels) {
19
- const list = byVersion.get(c.versionId) ?? [];
20
- list.push(c.channel);
21
- byVersion.set(c.versionId, list);
30
+ if (c.channel === 'prod' && stalled) {
31
+ tag(c.versionId, 'prod(promoted)'); // moved the pointer, but not serving
32
+ if (serving)
33
+ tag(serving, 'prod(serving)'); // what the scopes actually run
34
+ }
35
+ else {
36
+ tag(c.versionId, c.channel);
37
+ }
22
38
  }
23
39
  // Newest first (the id is a ULID — lexicographic order is chronological).
24
40
  const rows = [...versions]
@@ -30,5 +46,9 @@ export async function printVersions(controlPlaneUrl, header, slug) {
30
46
  console.log(fmt(headers));
31
47
  for (const r of rows)
32
48
  console.log(fmt(r));
49
+ if (stalled) {
50
+ console.log(`\n⚠ prod: version ${prod.versionId} is promoted but NOT serving — the in-place serve failed,\n` +
51
+ ` scopes still run ${serving}. Promote prod again to retry the serve.`);
52
+ }
33
53
  }
34
54
  //# sourceMappingURL=versions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../src/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../src/versions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@substrat-run/cli",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "The substrat CLI — authenticated deploy tooling: push a vertical to the platform, manage its versions and channels",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -28,7 +28,7 @@
28
28
  "node": ">=20"
29
29
  },
30
30
  "dependencies": {
31
- "@substrat-run/contracts": "^0.23.0"
31
+ "@substrat-run/contracts": "^0.25.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^22.0.0",