@substrat-run/control-plane-api 0.117.0 → 0.119.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.
@@ -1,5 +1,5 @@
1
- import { isTerminalDispatchFailure, ulid, } from '@substrat-run/kernel';
2
- import { principalId as principalIdSchema, scopeId as scopeIdSchema, tenantId as tenantIdSchema, provisionSiblingPayload, archiveScopePayload, provisionTenantPayload, setEntitlementsPayload, connectorDispatchPayload, CONNECTOR_DISPATCH_KIND_PREFIX, modelUsageLine, sweepRunsPayload, } from '@substrat-run/contracts';
1
+ import { isTerminalDispatchFailure, isPrimaryScope, ulid, } from '@substrat-run/kernel';
2
+ import { principalId as principalIdSchema, scopeId as scopeIdSchema, tenantId as tenantIdSchema, provisionSiblingPayload, archiveScopePayload, callsDeclares, peerInvokePayload, undeclaredCallMessage, provisionTenantPayload, setEntitlementsPayload, connectorDispatchPayload, CONNECTOR_DISPATCH_KIND_PREFIX, modelUsageLine, sweepRunsPayload, } from '@substrat-run/contracts';
3
3
  import { ControlPlaneError } from './client.js';
4
4
  import { attributeFailure, terminalFailureNote } from './failure-attribution.js';
5
5
  import { connectionGrantsForScope } from './vertical-client.js';
@@ -256,6 +256,113 @@ export function archiveScopeHandler(deps) {
256
256
  return { status: 'done', result: { archived: payload.scopeId } };
257
257
  };
258
258
  }
259
+ /**
260
+ * The ASYNCHRONOUS leg of a peer call (#1706): module code asked the platform to invoke an
261
+ * operation on another vertical of the same tenant, and this delivers it.
262
+ *
263
+ * **The caller is the scope this intent was drained from**, and nothing else. `ctx.tenantId`,
264
+ * `ctx.vertical` and `ctx.scopeId` are the platform's own facts about where the row was found
265
+ * — the payload names only the target and the operation, and could not name a caller if it
266
+ * tried (`peerInvokePayload` has no field for one). That is the same guarantee the synchronous
267
+ * leg gets from the dispatch parameters, arrived at a different way.
268
+ *
269
+ * The gates, in order, each settling `failed` with a reason a builder can act on:
270
+ *
271
+ * 1. **The caller declared this target** (`substrat.calls`, read from the version bound at
272
+ * drain time). The rule holds on BOTH legs — a declaration enforced on one and not the
273
+ * other is the gap someone finds later. A version pushed before the declaration existed
274
+ * carries null and is unenforced, exactly as a pre-#303 `outbound` is.
275
+ * 2. **The target resolves** to one primary, active instance in the CALLER's tenant, by the
276
+ * kernel's one rule. Never another tenant's, never a preview, never a guess.
277
+ * 3. **The target's deployment answers.** Its door then decides what the peer may do.
278
+ *
279
+ * At-least-once, with the intent id as the idempotency key: a redelivery after a crash reaches
280
+ * the same recorded response rather than running the operation twice.
281
+ */
282
+ export function peerInvokeHandler(deps) {
283
+ return async (ctx, request) => {
284
+ const payload = peerInvokePayload.parse(request.payload);
285
+ const admin = deps.host.admin;
286
+ if (payload.vertical === ctx.vertical) {
287
+ return { status: 'failed', error: `'${ctx.vertical}' cannot peer-call itself` };
288
+ }
289
+ // Revalidate on every delivery, including direct kicks and intents queued before suspension.
290
+ let caller;
291
+ let tenant;
292
+ try {
293
+ [caller, tenant] = await Promise.all([
294
+ admin.getScopeRecord(deps.actor, ctx.tenantId, ctx.scopeId),
295
+ admin.getTenant(deps.actor, ctx.tenantId),
296
+ ]);
297
+ }
298
+ catch (error) {
299
+ return { status: 'pending', error: `could not verify peer caller lifecycle: ${String(error)}` };
300
+ }
301
+ if (!caller || caller.tenantId !== ctx.tenantId || caller.vertical !== ctx.vertical ||
302
+ caller.status !== 'active' || !isPrimaryScope(caller) || tenant?.status !== 'active') {
303
+ return { status: 'failed', error: 'peer caller must be a primary, active scope in an active tenant' };
304
+ }
305
+ // 1. The caller's own declaration, from the version bound to the scope at drain time.
306
+ if (ctx.versionId) {
307
+ // A declaration that cannot be READ is not an absent declaration (#1719 review). The
308
+ // `null` that means "pushed before `calls` existed" is unenforced by design, so
309
+ // swallowing a lookup failure into `null` would turn a storage blip into "every target
310
+ // is declared" — the gate off, silently, on exactly the path it guards. A throw is
311
+ // transient, so the intent stays `pending` and the drain retries it (and settles it
312
+ // `failed` at the attempt ceiling); a version the directory does not have is not
313
+ // transient and fails now. Only a version that was READ may be unenforced.
314
+ let version;
315
+ try {
316
+ version = await admin.getVersion(deps.actor, ctx.versionId);
317
+ }
318
+ catch (e) {
319
+ return {
320
+ status: 'pending',
321
+ error: `could not read version ${ctx.versionId} to check whether '${ctx.vertical}' declares ` +
322
+ `'${payload.vertical}': ${e instanceof Error ? e.message : String(e)}`,
323
+ };
324
+ }
325
+ if (!version) {
326
+ return {
327
+ status: 'failed',
328
+ error: `version ${ctx.versionId} is not in the directory, so what '${ctx.vertical}' declares ` +
329
+ `cannot be established — the call is refused rather than allowed unchecked`,
330
+ };
331
+ }
332
+ if (!callsDeclares(version.calls ?? null, payload.vertical)) {
333
+ return { status: 'failed', error: undeclaredCallMessage(ctx.vertical, payload.vertical) };
334
+ }
335
+ }
336
+ // 2. The target instance, in the caller's tenant only.
337
+ const resolution = await admin.resolveVerticalInstance(ctx.tenantId, payload.vertical);
338
+ if (resolution.outcome === 'not-installed') {
339
+ return { status: 'failed', error: `vertical '${payload.vertical}' is not installed in this tenant` };
340
+ }
341
+ if (resolution.outcome === 'ambiguous') {
342
+ return {
343
+ status: 'failed',
344
+ error: `this tenant runs ${resolution.count} instances of '${payload.vertical}' — a call cannot ` +
345
+ 'pick one; bind the instance first',
346
+ };
347
+ }
348
+ // 3. The target's own deployment.
349
+ const target = await admin.getScopeRecord(deps.actor, ctx.tenantId, resolution.instance.scopeId);
350
+ const client = target ? await deps.resolveVerticalForScope(target) : undefined;
351
+ if (!client) {
352
+ return { status: 'failed', error: `no deployment serves '${payload.vertical}' in this tenant` };
353
+ }
354
+ const result = await client.verticalInvoke({
355
+ caller: { vertical: ctx.vertical, scope: ctx.scopeId },
356
+ tenantId: ctx.tenantId,
357
+ scopeId: resolution.instance.scopeId,
358
+ operation: payload.operation,
359
+ ...(payload.input === undefined ? {} : { input: payload.input }),
360
+ // The intent id: a redelivery reaches the recorded response instead of running twice.
361
+ idempotencyKey: request.id,
362
+ });
363
+ return { status: 'done', result: { invoked: payload.operation, result: result ?? null } };
364
+ };
365
+ }
259
366
  /**
260
367
  * Enforce the manager bound: provisioner capability + declared-SKU universe. Returns the
261
368
  * declared SKU list on admission (the reconcile in `set-entitlements` needs it — it bounds
@@ -1 +1 @@
1
- {"version":3,"file":"platform-drain.js","sourceRoot":"","sources":["../src/platform-drain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-drain.js","sourceRoot":"","sources":["../src/platform-drain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { oidcCallbackUrl, type PlatformActorId, type PreviewAuth, type Scope, type ScopeId, type TenantId } from '@substrat-run/contracts';
2
+ import type { HostAdmin } from '@substrat-run/kernel';
3
+ import type { VerticalClient } from './vertical-client.js';
4
+ export interface PreviewAuthDeps {
5
+ admin: Pick<HostAdmin, 'listScopes' | 'listVerticals' | 'listHostnames' | 'getScopeRecord'>;
6
+ actor: PlatformActorId;
7
+ /** The deployment serving an ISSUER scope — where its `/internal/preview-client` lives. */
8
+ issuerClient(scope: Scope): Promise<VerticalClient | undefined>;
9
+ }
10
+ /** The team's own auth-servers: active, not a fork, not a preview, of a vertical that provides `oidc-issuer`. */
11
+ export declare function tenantIssuers(deps: PreviewAuthDeps, tenantId: TenantId): Promise<Scope[]>;
12
+ /** Re-exported for the preview routes, which name a preview's callback on every row. */
13
+ export { oidcCallbackUrl };
14
+ export interface WirePreviewAuthInput {
15
+ tenantId: TenantId;
16
+ /** The version THIS push bound — the only one whose store this push may deliver to. */
17
+ versionId: string;
18
+ previewId: ScopeId;
19
+ tag: string;
20
+ /** The scope the preview forks. `null` for a clean room, which has no login to take after. */
21
+ parent: Scope | null;
22
+ /** The preview's `--<tag>` hostname — its callback's host. */
23
+ previewHostname: string;
24
+ appName: string;
25
+ /** Deliver config into THIS push's own version deployment (never "whatever is bound now"). */
26
+ deliver(entries: Array<{
27
+ key: string;
28
+ value: string;
29
+ }>): Promise<void>;
30
+ }
31
+ /**
32
+ * Give a freshly bound preview its own client at the team auth-server its parent signs in
33
+ * with. Answers what it did; THROWS only when it minted a client and could not leave the
34
+ * preview with a working login — that is a failure, and `preview create` must not report it
35
+ * as success. The secret travels from the mint's answer into `deliver` and nowhere else.
36
+ */
37
+ export declare function wirePreviewAuth(deps: PreviewAuthDeps, input: WirePreviewAuthInput): Promise<PreviewAuth>;
38
+ /**
39
+ * Delete every client minted for a preview, at every auth-server of its tenant — the reap's
40
+ * half, run BEFORE the preview's storage and row go, so a failure leaves a preview a retry can
41
+ * still find. An auth-server that predates preview clients cannot have minted one and is
42
+ * skipped; any other failure throws.
43
+ */
44
+ export declare function retireAllPreviewClients(deps: PreviewAuthDeps, tenantId: TenantId, previewScopeId: ScopeId): Promise<string[]>;
45
+ /**
46
+ * The reap's half for ANY scope about to go, as the platform sweep's expiry GC sees it: a
47
+ * preview fork's clients are retired, and anything else — a snapshot, a clean room — has none
48
+ * and is left alone. One predicate for the interactive reap and the sweep, so they agree.
49
+ */
50
+ export declare function retireClientsOfReapedScope(deps: PreviewAuthDeps, scope: Scope | undefined): Promise<string[]>;
51
+ //# sourceMappingURL=preview-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-auth.d.ts","sourceRoot":"","sources":["../src/preview-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAGf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgD3D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC,CAAC;IAC5F,KAAK,EAAE,eAAe,CAAC;IACvB,2FAA2F;IAC3F,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;CACjE;AAED,iHAAiH;AACjH,wBAAsB,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAO/F;AAaD,wFAAwF;AACxF,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAWD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiK9G;AAaD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAanB;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnH"}
@@ -0,0 +1,273 @@
1
+ import { SHARED_ISSUER_CONFIG_KEY, oidcCallbackUrl, } from '@substrat-run/contracts';
2
+ import { ControlPlaneError } from './client.js';
3
+ /**
4
+ * A preview's login (#1704) — the control plane's half. The issuer's half, and why the
5
+ * protocol has the shape it has, are in `@substrat-run/contracts`' `preview-client.ts`.
6
+ *
7
+ * A fork arrives with the parent's DATA and none of its delivered config: the PR's version
8
+ * is its own script with its own, empty, config store — at create and again after every push,
9
+ * which binds yet another script. The parent's `substrat:auth` carries a client secret the
10
+ * platform neither stores nor reads back, so it cannot be copied either. What CAN be done,
11
+ * when the parent signs in at one of the team's own auth-servers, is to give the preview a
12
+ * client of its own there and deliver THAT. Prod's client is never read, written, or taught a
13
+ * preview's callback.
14
+ *
15
+ * ## Which issuer
16
+ *
17
+ * Nothing the control plane holds says which issuer an app chose — only the dashboard knows,
18
+ * and it tells the ISSUER (#1619's resource rows, #1670's places), never the plane. So every
19
+ * active auth-server of the preview's OWN tenant is asked whether it signs the parent in; a
20
+ * fork or preview of an auth-server is never asked (it holds copies of prod's clients, not
21
+ * the parent's binding). One claim is wired. None is `unregistered` — an external issuer, a
22
+ * builtin login, or an install the dashboard has not registered yet — and more than one is
23
+ * `ambiguous`, which wires nothing rather than guess.
24
+ *
25
+ * ## Concurrent pushes
26
+ *
27
+ * Two pushes to one preview each bind their own version, and each version is its own config
28
+ * store; only the version the preview is bound to NOW is served. So a push:
29
+ *
30
+ * 1. re-reads the binding before it mints, and stops if its version is no longer bound;
31
+ * 2. delivers into ITS OWN version's deployment — never "whatever the scope is bound to",
32
+ * which would let an older push overwrite a newer push's store;
33
+ * 3. re-reads the binding before it retires anything, and if its version has moved on,
34
+ * deletes only the client it minted (which lives in its own, unserved, store) and stops;
35
+ * 4. otherwise retires the preview's clients OLDER than its own. `superseded` (a newer one
36
+ * exists) means stop: the push that minted it owns what happens next. Only `kept: false`
37
+ * — its own client vanished while its version is still bound — is retried, three
38
+ * attempts in all; running out is a failure, never a success.
39
+ */
40
+ /** The capability a vertical declares to be a team issuer (manifest `provides`, #427). */
41
+ const OIDC_ISSUER = 'oidc-issuer';
42
+ /** Rows pushed before `provides` existed — the same legacy slug the dashboard counts. */
43
+ const LEGACY_ISSUER_SLUG = 'auth-server';
44
+ /** The most callbacks a parent's hostnames yield in one check (the wire bound). */
45
+ const MAX_PARENT_CALLBACKS = 32;
46
+ const MAX_ATTEMPTS = 3;
47
+ /** The team's own auth-servers: active, not a fork, not a preview, of a vertical that provides `oidc-issuer`. */
48
+ export async function tenantIssuers(deps, tenantId) {
49
+ const verticals = await deps.admin.listVerticals(deps.actor);
50
+ const issuerSlugs = new Set([LEGACY_ISSUER_SLUG, ...verticals.filter((v) => v.provides?.includes(OIDC_ISSUER)).map((v) => v.slug)]);
51
+ const scopes = await deps.admin.listScopes(deps.actor, { tenantId, status: ['active'] });
52
+ return scopes.filter((s) => s.tenantId === tenantId && s.vertical !== null && issuerSlugs.has(s.vertical) && !s.forkedFrom && s.kind !== 'preview');
53
+ }
54
+ /** The hostname an issuer is addressed by: its canonical app hostname, else any live one. */
55
+ function issuerHostname(bound) {
56
+ const live = bound.filter((h) => h.status !== 'failed');
57
+ const active = live.filter((h) => h.status === 'active');
58
+ const pick = (hs) => hs.find((h) => h.surface === 'app' && h.canonical) ?? hs.find((h) => h.canonical) ?? hs[0];
59
+ return (pick(active) ?? pick(live))?.hostname;
60
+ }
61
+ const reasonOf = (e) => (e instanceof Error ? e.message : String(e));
62
+ /** Re-exported for the preview routes, which name a preview's callback on every row. */
63
+ export { oidcCallbackUrl };
64
+ /** Why a push left the login alone, as `preview create` reports it. */
65
+ function superseded(callbackUrl, why) {
66
+ return {
67
+ status: 'superseded',
68
+ callbackUrl,
69
+ note: `Sign-in: ${why} — a newer push owns this preview's login, so this push delivered none.`,
70
+ };
71
+ }
72
+ /**
73
+ * Give a freshly bound preview its own client at the team auth-server its parent signs in
74
+ * with. Answers what it did; THROWS only when it minted a client and could not leave the
75
+ * preview with a working login — that is a failure, and `preview create` must not report it
76
+ * as success. The secret travels from the mint's answer into `deliver` and nowhere else.
77
+ */
78
+ export async function wirePreviewAuth(deps, input) {
79
+ const callbackUrl = oidcCallbackUrl(input.previewHostname);
80
+ if (!input.parent) {
81
+ return {
82
+ status: 'not-applicable',
83
+ callbackUrl,
84
+ note: 'Sign-in: a clean-room preview forks no app, so it has no login to take after and none was delivered.',
85
+ };
86
+ }
87
+ const parent = input.parent;
88
+ const parentRedirectUris = [
89
+ ...new Set((await deps.admin.listHostnames(deps.actor, { scopeId: parent.id }))
90
+ .filter((h) => h.status !== 'failed')
91
+ .map((h) => oidcCallbackUrl(h.hostname))),
92
+ ].slice(0, MAX_PARENT_CALLBACKS);
93
+ const unregistered = (extra) => ({
94
+ status: 'unregistered',
95
+ callbackUrl,
96
+ note: `Sign-in: no team auth server of this team signs in the app this preview forks, so no client was minted ` +
97
+ `for it and no login config was delivered.${extra ? ` ${extra}` : ''} If the app signs in at an EXTERNAL ` +
98
+ `issuer, that issuer needs ${callbackUrl} registered as a redirect URI — and the preview still has no ` +
99
+ `login config, because an external client's credentials are never copied to a preview. If the app signs ` +
100
+ `in at one of your auth servers, open the dashboard's Apps list once (it registers existing installs ` +
101
+ `there) and re-run.`,
102
+ });
103
+ if (parentRedirectUris.length === 0)
104
+ return unregistered('The app it forks has no hostname to sign in at.');
105
+ // Ask every issuer of the tenant; mint only where exactly one claims.
106
+ const claims = [];
107
+ const problems = [];
108
+ for (const scope of await tenantIssuers(deps, input.tenantId)) {
109
+ const client = await deps.issuerClient(scope);
110
+ if (!client) {
111
+ problems.push({ issuerScopeId: scope.id, problem: 'its deployment could not be resolved' });
112
+ continue;
113
+ }
114
+ try {
115
+ const { claimed } = await client.checkPreviewClient({
116
+ tenantId: input.tenantId,
117
+ scopeId: scope.id,
118
+ parentScopeId: parent.id,
119
+ parentRedirectUris,
120
+ });
121
+ if (!claimed)
122
+ continue;
123
+ const hostname = issuerHostname(await deps.admin.listHostnames(deps.actor, { scopeId: scope.id }));
124
+ if (!hostname) {
125
+ problems.push({ issuerScopeId: scope.id, problem: 'it claims the app but has no hostname to be an issuer at' });
126
+ continue;
127
+ }
128
+ claims.push({ scope, client, hostname });
129
+ }
130
+ catch (e) {
131
+ problems.push({ issuerScopeId: scope.id, problem: reasonOf(e) });
132
+ }
133
+ }
134
+ if (claims.length > 1) {
135
+ return {
136
+ status: 'ambiguous',
137
+ callbackUrl,
138
+ issuers: claims.map((c) => ({ issuerScopeId: c.scope.id })),
139
+ note: `Sign-in: more than one of your auth servers claims the app this preview forks ` +
140
+ `(${claims.map((c) => c.scope.id).join(', ')}), so the platform wired none rather than guess. ` +
141
+ `Open the dashboard's Apps list once so each auth server learns which apps are its own, then re-run.`,
142
+ };
143
+ }
144
+ const claim = claims[0];
145
+ if (!claim) {
146
+ if (problems.length === 0)
147
+ return unregistered();
148
+ return {
149
+ status: 'unknown',
150
+ callbackUrl,
151
+ issuers: problems,
152
+ note: `Sign-in: not set up — ${problems.length === 1 ? 'an auth server' : 'some auth servers'} of this team ` +
153
+ `could not be asked: ${problems.map((p) => `${p.issuerScopeId}: ${p.problem}`).join('; ')}. None that could ` +
154
+ `be asked signs the app in. Fix that and re-run to give this preview its login.`,
155
+ };
156
+ }
157
+ const issuer = `https://${claim.hostname}`;
158
+ const address = { tenantId: input.tenantId, scopeId: claim.scope.id, previewScopeId: input.previewId };
159
+ const retireOwn = (minted) => claim.client.retirePreviewClients({ ...address, only: minted.clientId }).then(() => null, (e) => reasonOf(e));
160
+ const bound = async () => {
161
+ const rec = await deps.admin.getScopeRecord(deps.actor, input.tenantId, input.previewId);
162
+ if (!rec || rec.status !== 'active')
163
+ return 'gone';
164
+ return rec.verticalVersionId === input.versionId ? 'ours' : 'moved';
165
+ };
166
+ const reapedMeanwhile = async () => {
167
+ // The preview was reaped while this push ran: nothing may outlive it at the issuer.
168
+ await claim.client.retirePreviewClients(address).catch(() => undefined);
169
+ return superseded(callbackUrl, 'the preview was reaped while this push ran');
170
+ };
171
+ const noLogin = (why) => new ControlPlaneError(502, `preview '${input.tag}' was created but has NO working login: ${why}. Re-run \`preview create\` to retry.`);
172
+ for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
173
+ const before = await bound();
174
+ if (before === 'gone')
175
+ return reapedMeanwhile();
176
+ if (before === 'moved')
177
+ return superseded(callbackUrl, 'another push re-bound the preview');
178
+ let minted;
179
+ try {
180
+ minted = await claim.client.mintPreviewClient({
181
+ ...address,
182
+ parentScopeId: parent.id,
183
+ parentRedirectUris,
184
+ redirectUri: callbackUrl,
185
+ postLogoutRedirectUri: `https://${input.previewHostname}/`,
186
+ clientName: `${input.appName} (preview ${input.tag})`,
187
+ });
188
+ }
189
+ catch (e) {
190
+ throw noLogin(`the auth server ${claim.scope.id} did not mint its client (${reasonOf(e)})`);
191
+ }
192
+ try {
193
+ await input.deliver([
194
+ {
195
+ key: 'substrat:auth',
196
+ value: JSON.stringify({ mode: 'oidc', issuer, clientId: minted.clientId, clientSecret: minted.clientSecret }),
197
+ },
198
+ // A team auth-server is shared by construction (#1683): the preview accepts its OWN tokens only.
199
+ { key: SHARED_ISSUER_CONFIG_KEY, value: 'true' },
200
+ ]);
201
+ }
202
+ catch (e) {
203
+ const cleanup = await retireOwn(minted);
204
+ throw noLogin(`delivering its client failed (${reasonOf(e)})` +
205
+ (cleanup ? `, and removing that client failed too (${cleanup}) — the preview's reap removes it` : ''));
206
+ }
207
+ const after = await bound();
208
+ if (after !== 'ours') {
209
+ // Our client sits only in our own version's store, which is no longer served.
210
+ await retireOwn(minted);
211
+ return after === 'gone' ? reapedMeanwhile() : superseded(callbackUrl, 'another push re-bound the preview');
212
+ }
213
+ let retired;
214
+ try {
215
+ retired = await claim.client.retirePreviewClients({ ...address, keep: minted.clientId });
216
+ }
217
+ catch (e) {
218
+ // Delivered and bound: the login works. What is left is older clients, which the next
219
+ // push or the reap removes — said, not hidden.
220
+ return wired(claim.scope.id, issuer, minted.clientId, callbackUrl, ` Older clients of this preview could not be removed yet (${reasonOf(e)}); the next push or the reap removes them.`);
221
+ }
222
+ if (retired.kept === false)
223
+ continue; // our own client vanished while our version is bound
224
+ if ((await bound()) === 'gone')
225
+ return reapedMeanwhile();
226
+ return wired(claim.scope.id, issuer, minted.clientId, callbackUrl);
227
+ }
228
+ throw noLogin(`its client kept disappearing at the auth server ${claim.scope.id} (${MAX_ATTEMPTS} attempts)`);
229
+ }
230
+ function wired(issuerScopeId, issuer, clientId, callbackUrl, extra = '') {
231
+ return {
232
+ status: 'wired',
233
+ callbackUrl,
234
+ issuer,
235
+ issuerScopeId,
236
+ clientId,
237
+ note: `Sign-in: this preview has its own client at your auth server ${issuer} (client ${clientId}); it is deleted when the preview is reaped.${extra}`,
238
+ };
239
+ }
240
+ /**
241
+ * Delete every client minted for a preview, at every auth-server of its tenant — the reap's
242
+ * half, run BEFORE the preview's storage and row go, so a failure leaves a preview a retry can
243
+ * still find. An auth-server that predates preview clients cannot have minted one and is
244
+ * skipped; any other failure throws.
245
+ */
246
+ export async function retireAllPreviewClients(deps, tenantId, previewScopeId) {
247
+ const deleted = [];
248
+ for (const scope of await tenantIssuers(deps, tenantId)) {
249
+ const client = await deps.issuerClient(scope);
250
+ if (!client)
251
+ throw new ControlPlaneError(502, `the auth server ${scope.id} could not be reached to delete preview ${previewScopeId}'s clients`);
252
+ try {
253
+ deleted.push(...(await client.retirePreviewClients({ tenantId, scopeId: scope.id, previewScopeId })).deleted);
254
+ }
255
+ catch (e) {
256
+ if (e instanceof ControlPlaneError && e.status === 501)
257
+ continue;
258
+ throw e;
259
+ }
260
+ }
261
+ return deleted;
262
+ }
263
+ /**
264
+ * The reap's half for ANY scope about to go, as the platform sweep's expiry GC sees it: a
265
+ * preview fork's clients are retired, and anything else — a snapshot, a clean room — has none
266
+ * and is left alone. One predicate for the interactive reap and the sweep, so they agree.
267
+ */
268
+ export async function retireClientsOfReapedScope(deps, scope) {
269
+ if (!scope || scope.kind !== 'preview' || !scope.forkedFrom)
270
+ return [];
271
+ return retireAllPreviewClients(deps, scope.tenantId, scope.id);
272
+ }
273
+ //# sourceMappingURL=preview-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-auth.js","sourceRoot":"","sources":["../src/preview-auth.ts"],"names":[],"mappings":"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"}