@substrat-run/control-plane-api 0.161.0 → 0.163.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/api.d.ts.map +1 -1
- package/dist/api.js +44 -4
- package/dist/api.js.map +1 -1
- package/dist/platform-drain.d.ts +3 -3
- package/dist/platform-drain.d.ts.map +1 -1
- package/dist/platform-drain.js +24 -0
- package/dist/platform-drain.js.map +1 -1
- package/dist/platform-entry.generated.d.ts +1 -1
- package/dist/platform-entry.generated.d.ts.map +1 -1
- package/dist/platform-entry.generated.js +2 -2
- package/dist/platform-entry.generated.js.map +1 -1
- package/dist/platform-wire.d.ts +2 -1
- package/dist/platform-wire.d.ts.map +1 -1
- package/dist/platform-wire.js +23 -3
- package/dist/platform-wire.js.map +1 -1
- package/dist/wire-readiness.d.ts +150 -0
- package/dist/wire-readiness.d.ts.map +1 -0
- package/dist/wire-readiness.js +255 -0
- package/dist/wire-readiness.js.map +1 -0
- package/dist/wire-walk.d.ts +22 -1
- package/dist/wire-walk.d.ts.map +1 -1
- package/dist/wire-walk.js +45 -39
- package/dist/wire-walk.js.map +1 -1
- package/package.json +8 -8
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAE9G,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAsBL,KAAK,qBAAqB,EAqF1B,CAAC,EAeD,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAKV,UAAU,EACV,kBAAkB,EAGlB,wBAAwB,EACxB,oBAAoB,EAEpB,eAAe,EAKf,eAAe,EAYhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAoB,oBAAoB,EAAE,SAAS,EAAc,eAAe,EAAkC,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -7,7 +7,7 @@ import { upstreamHandleIn, upstreamReferenceOf, withUpstreamReference } from '@s
|
|
|
7
7
|
import { SCOPE_COPY_LEASE_MS, copyRestoreFence, publishedMigrationDigest, replayStoreErasures } from '@substrat-run/kernel';
|
|
8
8
|
import { attributeFailure } from './failure-attribution.js';
|
|
9
9
|
import { auditedChange, withAuditedOutcomes } from './audited-change.js';
|
|
10
|
-
import { BIND_EXPORT_BREAK_REFUSAL, CARRIED_AWAY_KEY, bindExportBreakRefusal, carriedAwayDump, dumpMetaValue, metaValueIn, crossVerticalHealth, exportBreakRefusal, isBindExportBreakRefusal, isExportBreakRefusal, isExportBreakUnjudged, isPrimaryScope, promoteReviewDigest, rebindReviewDigest, assertRebindReviewCurrent, migrationProgress, ulid, auditWarningOf, REQUEST_ROLLUP_LIMIT_DEFAULT, REQUEST_ROLLUP_LIMIT_MAX, METER_DAYS_LIMIT_DEFAULT, METER_DAYS_LIMIT_MAX, releaseRolesAskScopes, releaseRoleSetRefusal, withheldOpsFailure, } from '@substrat-run/kernel';
|
|
10
|
+
import { BIND_EXPORT_BREAK_REFUSAL, CARRIED_AWAY_KEY, bindExportBreakRefusal, carriedAwayDump, dumpMetaValue, metaValueIn, crossVerticalHealth, exportBreakRefusal, isBindExportBreakRefusal, isExportBreakRefusal, listedPromoteRefusal, isExportBreakUnjudged, isPrimaryScope, promoteReviewDigest, rebindReviewDigest, assertRebindReviewCurrent, migrationProgress, ulid, auditWarningOf, REQUEST_ROLLUP_LIMIT_DEFAULT, REQUEST_ROLLUP_LIMIT_MAX, METER_DAYS_LIMIT_DEFAULT, METER_DAYS_LIMIT_MAX, releaseRolesAskScopes, releaseRoleSetRefusal, withheldOpsFailure, } from '@substrat-run/kernel';
|
|
11
11
|
import { TENANT_HEADER, confinedTenant } from './auth.js';
|
|
12
12
|
import { mintTenantToken } from './tenant-token.js';
|
|
13
13
|
import { beginTransfer, connectionGrantsForScope, transferScope, isScopeNotHeld, notHeldIsBenign } from './vertical-client.js';
|
|
@@ -69,6 +69,7 @@ import { backupDirectoryIfDue } from './directory-backup.js';
|
|
|
69
69
|
import { deployedDoClasses, platformSweeperDecision } from './platform-entry.js';
|
|
70
70
|
import { wireSettingsRefusal, wireUploadFor } from './wire-upload.js';
|
|
71
71
|
import { parseWireWalkCursor, runWireWalk, WIRE_WALK_LIMIT_DEFAULT, WIRE_WALK_LIMIT_MAX, WIRE_WALK_RELEASE_MAX, } from './wire-walk.js';
|
|
72
|
+
import { wireKeyDropSince, wireReadinessReport, WIRE_READINESS_LIMIT_DEFAULT, WIRE_READINESS_LIMIT_MAX } from './wire-readiness.js';
|
|
72
73
|
import { STORAGE_PAGE_DEFAULT, STORAGE_PAGE_MAX, readStoragePage } from './storage-meter.js';
|
|
73
74
|
import { queryLakeEvents } from './lake-gateway.js';
|
|
74
75
|
import { LakeQueryError } from './r2-sql-engine.js';
|
|
@@ -7718,8 +7719,11 @@ export function createControlPlaneApi(options) {
|
|
|
7718
7719
|
// service token, and this issue narrows WHOSE data a credential reaches, not what
|
|
7719
7720
|
// a tenant may do inside its own. Taking the gate away from them here would be a
|
|
7720
7721
|
// capability change hidden in a security fix.
|
|
7722
|
+
//
|
|
7723
|
+
// Answered here, before any other gate or read, and judged again by the host (`unlistedOnly`,
|
|
7724
|
+
// below) in the unit that moves the channel, so a listing that lands meanwhile is seen (#2565).
|
|
7721
7725
|
if (p.kind === 'builder' && channel === 'prod' && v.listed) {
|
|
7722
|
-
return refuse(c, 'forbidden',
|
|
7726
|
+
return refuse(c, 'forbidden', listedPromoteRefusal().message);
|
|
7723
7727
|
}
|
|
7724
7728
|
}
|
|
7725
7729
|
const { versionId, acknowledge } = promoteVersionBody.parse(await c.req.json());
|
|
@@ -7763,7 +7767,7 @@ export function createControlPlaneApi(options) {
|
|
|
7763
7767
|
// and refuses a non-admitted version. Both are enforced below the seam and
|
|
7764
7768
|
// surface as a 4xx through mapError, not a 500.
|
|
7765
7769
|
try {
|
|
7766
|
-
await c.var.admin.promoteVersion(c.get('actor'), slug, channel, versionId, acknowledge);
|
|
7770
|
+
await c.var.admin.promoteVersion(c.get('actor'), slug, channel, versionId, acknowledge, { unlistedOnly: p.kind === 'builder' });
|
|
7767
7771
|
}
|
|
7768
7772
|
catch (err) {
|
|
7769
7773
|
if (!isExportBreakRefusal(err))
|
|
@@ -10681,12 +10685,15 @@ export function createControlPlaneApi(options) {
|
|
|
10681
10685
|
throw new ControlPlaneError(422, 'the cursor is not one a pass answered');
|
|
10682
10686
|
const apply = body.apply === true;
|
|
10683
10687
|
const confirm = body.confirm === true;
|
|
10688
|
+
// Before anything is read: the readiness report trusts a record as confirmed only when it was
|
|
10689
|
+
// written after the confirming walk began.
|
|
10690
|
+
const startedAt = new Date().toISOString();
|
|
10684
10691
|
// Refused settings give every script nothing, which an applied pass would write as a fleet-wide
|
|
10685
10692
|
// withdrawal: the pass is refused before it walks anything, dry or applied, and audited as such.
|
|
10686
10693
|
const refused = await wireSettingsRefusal(options.wireUpload);
|
|
10687
10694
|
if (refused) {
|
|
10688
10695
|
await c.var.admin.recordWireWalk(actor, {
|
|
10689
|
-
apply, confirm, from: body.cursor ?? null, next: null, walked: 0,
|
|
10696
|
+
apply, confirm, startedAt, from: body.cursor ?? null, next: null, walked: 0,
|
|
10690
10697
|
updated: [], held: [], released: [], skipped: [], failed: [],
|
|
10691
10698
|
refused: `${refused.withheld}: ${refused.reason}`,
|
|
10692
10699
|
});
|
|
@@ -10718,6 +10725,7 @@ export function createControlPlaneApi(options) {
|
|
|
10718
10725
|
await c.var.admin.recordWireWalk(actor, {
|
|
10719
10726
|
apply,
|
|
10720
10727
|
confirm,
|
|
10728
|
+
startedAt,
|
|
10721
10729
|
from: body.cursor ?? null,
|
|
10722
10730
|
next: pass?.next ?? null,
|
|
10723
10731
|
walked: walked.length,
|
|
@@ -10731,6 +10739,38 @@ export function createControlPlaneApi(options) {
|
|
|
10731
10739
|
}
|
|
10732
10740
|
return c.json(pass);
|
|
10733
10741
|
});
|
|
10742
|
+
// RFC wire-signing follow-on 4: one page of the readiness report (`wireReadinessReport`): what blocks
|
|
10743
|
+
// `signed-only`, a key drop (when the body names one) and the withdrawal of the shared credential.
|
|
10744
|
+
// Advisory and read-only: it reads the registry, the capability records and the walk's rows, and
|
|
10745
|
+
// nothing else; its record reads leave their access-log rows. A staff sign-in, never a service token.
|
|
10746
|
+
// Bounded and resumable like the walk: at most `limit` scripts, from `cursor`, answering `next`.
|
|
10747
|
+
app.post('/wire-auth/readiness', async (c) => {
|
|
10748
|
+
const actor = await byAPerson(c, { write: 'a wire readiness report', person: 'the wire readiness report is read by a person' });
|
|
10749
|
+
if (!c.var.admin.listWireAuth)
|
|
10750
|
+
throw new ControlPlaneError(501, 'this control plane does not keep capability records');
|
|
10751
|
+
const body = z
|
|
10752
|
+
.object({
|
|
10753
|
+
cursor: z.string().min(1).max(512).optional(),
|
|
10754
|
+
limit: z.number().int().min(1).max(WIRE_READINESS_LIMIT_MAX).optional(),
|
|
10755
|
+
keyDrop: z
|
|
10756
|
+
.object({ issuer: z.enum(['router', 'platform']), kid: z.string().min(1).max(256), since: z.unknown().optional() })
|
|
10757
|
+
.strict()
|
|
10758
|
+
.optional(),
|
|
10759
|
+
})
|
|
10760
|
+
.strict()
|
|
10761
|
+
.parse(await readCappedJson(c.req.raw, WIRE_WALK_REQUEST_MAX_BYTES));
|
|
10762
|
+
const cursor = body.cursor === undefined ? null : parseWireWalkCursor(body.cursor);
|
|
10763
|
+
if (body.cursor !== undefined && cursor === null)
|
|
10764
|
+
throw new ControlPlaneError(422, 'the cursor is not one a page answered');
|
|
10765
|
+
let keyDrop;
|
|
10766
|
+
if (body.keyDrop) {
|
|
10767
|
+
const since = wireKeyDropSince(body.keyDrop.since, new Date());
|
|
10768
|
+
if (typeof since !== 'string')
|
|
10769
|
+
throw new ControlPlaneError(422, since.refused);
|
|
10770
|
+
keyDrop = { issuer: body.keyDrop.issuer, kid: body.keyDrop.kid, since };
|
|
10771
|
+
}
|
|
10772
|
+
return c.json(await wireReadinessReport({ admin: c.var.admin, actor, settings: options.wireUpload }, { cursor, from: body.cursor ?? null, limit: body.limit ?? WIRE_READINESS_LIMIT_DEFAULT, ...(keyDrop ? { keyDrop } : {}) }));
|
|
10773
|
+
});
|
|
10734
10774
|
return app;
|
|
10735
10775
|
}
|
|
10736
10776
|
/** The most a wire walk's request body may be: a cursor and up to `WIRE_WALK_RELEASE_MAX` script names. */
|