@substrat-run/control-plane-api 0.130.1 → 0.131.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 +11 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +460 -337
- package/dist/api.js.map +1 -1
- package/dist/auth.d.ts +7 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/tenant-token.d.ts +7 -1
- package/dist/tenant-token.d.ts.map +1 -1
- package/dist/tenant-token.js +35 -8
- package/dist/tenant-token.js.map +1 -1
- package/package.json +6 -6
package/dist/auth.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type PlatformActorId, type TenantId } from '@substrat-run/contracts';
|
|
1
|
+
import { type OnBehalfOf, type PlatformActorId, type TenantId } from '@substrat-run/contracts';
|
|
2
2
|
/**
|
|
3
3
|
* The identity seam for the control plane (control-plane.md §6).
|
|
4
4
|
*
|
|
@@ -136,6 +136,11 @@ export declare function firstBuilderAuth(...auths: BuilderAuth[]): BuilderAuth;
|
|
|
136
136
|
export interface TenantServiceIdentity {
|
|
137
137
|
actor: PlatformActorId;
|
|
138
138
|
tenantId: TenantId;
|
|
139
|
+
/**
|
|
140
|
+
* The person the credential was minted for (#977), when it was minted for one. The
|
|
141
|
+
* audit row records it beside `actor`; it widens nothing — the pin is `tenantId`.
|
|
142
|
+
*/
|
|
143
|
+
onBehalfOf?: OnBehalfOf;
|
|
139
144
|
}
|
|
140
145
|
/**
|
|
141
146
|
* Resolves a request to a tenant-scoped service principal, or null to decline. Null is
|
|
@@ -164,6 +169,7 @@ export type Principal = {
|
|
|
164
169
|
kind: 'tenant';
|
|
165
170
|
actor: PlatformActorId;
|
|
166
171
|
tenantId: TenantId;
|
|
172
|
+
onBehalfOf?: OnBehalfOf;
|
|
167
173
|
};
|
|
168
174
|
/**
|
|
169
175
|
* The tenant a principal is CONFINED to, or null when it is fleet-wide staff.
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/tenant-token.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { type PlatformActorId, type TenantId } from '@substrat-run/contracts';
|
|
1
|
+
import { type ImpersonationStamp, type PlatformActorId, type PrincipalId, type TenantId } from '@substrat-run/contracts';
|
|
2
2
|
import { type TenantServiceAuth } from './auth.js';
|
|
3
3
|
interface TenantTokenClaim {
|
|
4
4
|
v: 1;
|
|
5
5
|
tenantId: string;
|
|
6
|
+
/** The person this token acts for (#977) — attribution, never authority. */
|
|
7
|
+
principal?: string;
|
|
8
|
+
/** K-42: the staff member acting as `principal`, when one was. */
|
|
9
|
+
impersonation?: ImpersonationStamp;
|
|
6
10
|
/** Informational — no expiry in v1, exactly as push tokens have none. */
|
|
7
11
|
iat: number;
|
|
8
12
|
}
|
|
@@ -24,6 +28,8 @@ interface TenantTokenClaim {
|
|
|
24
28
|
*/
|
|
25
29
|
export declare function mintTenantToken(secret: string, identity: {
|
|
26
30
|
tenantId: TenantId;
|
|
31
|
+
principal?: PrincipalId;
|
|
32
|
+
impersonation?: ImpersonationStamp;
|
|
27
33
|
}): Promise<string>;
|
|
28
34
|
/** Verify a tenant token string → its claim, or null (bad prefix/shape/signature). */
|
|
29
35
|
export declare function verifyTenantToken(secret: string, token: string): Promise<TenantTokenClaim | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-token.d.ts","sourceRoot":"","sources":["../src/tenant-token.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tenant-token.d.ts","sourceRoot":"","sources":["../src/tenant-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAwDzE,UAAU,gBAAgB;IACxB,CAAC,EAAE,CAAC,CAAC;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAE,WAAW,CAAC;IAAC,aAAa,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC5F,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,sFAAsF;AACtF,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAmBvG;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAezF"}
|
package/dist/tenant-token.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { tenantId as tenantIdSchema } from '@substrat-run/contracts';
|
|
1
|
+
import { impersonationStamp, principalId, tenantId as tenantIdSchema, } from '@substrat-run/contracts';
|
|
2
2
|
import { SERVICE_TOKEN_HEADER } from './auth.js';
|
|
3
3
|
import { hasTokenPrefix, openToken, signToken } from './token-codec.js';
|
|
4
4
|
/**
|
|
@@ -25,11 +25,16 @@ import { hasTokenPrefix, openToken, signToken } from './token-codec.js';
|
|
|
25
25
|
*
|
|
26
26
|
* **The claim carries no actor, deliberately.** Who a row is audited as stays the
|
|
27
27
|
* host's decision (`tenantTokenAuth(secret, actor)`, exactly as `serviceTokenAuth`
|
|
28
|
-
* takes it), so a minted token can never name its own audit subject
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
28
|
+
* takes it), so a minted token can never name its own audit subject.
|
|
29
|
+
*
|
|
30
|
+
* **It may carry the person, beside the actor (#977's second half).** `principal` is
|
|
31
|
+
* the signed-in user the dashboard minted this token for, and `impersonation` the K-42
|
|
32
|
+
* stamp when a staff member was acting as them. Neither is authority — the tenant pin
|
|
33
|
+
* is the whole of what the token may do, with or without them — they are attribution:
|
|
34
|
+
* the admin row names the service that executed (`actor`) AND the person it acted for
|
|
35
|
+
* (`onBehalfOf`), rather than retyping `actor` into one or the other. Only the staff
|
|
36
|
+
* mint writes them, so a tenant credential cannot re-attribute itself; a token minted
|
|
37
|
+
* without a principal writes unattributed rows, exactly as every row was before.
|
|
33
38
|
*
|
|
34
39
|
* **A dedicated secret**, never `pushTokenSecret` and never `PLATFORM_SECRET`. A
|
|
35
40
|
* shared signing key would make a compromised CI push token and a compromised
|
|
@@ -64,7 +69,13 @@ const PREFIX = 'stt1';
|
|
|
64
69
|
* resolves a slug through the `x-substrat-tenant` header the plane already pins.
|
|
65
70
|
*/
|
|
66
71
|
export async function mintTenantToken(secret, identity) {
|
|
67
|
-
const claim = {
|
|
72
|
+
const claim = {
|
|
73
|
+
v: 1,
|
|
74
|
+
tenantId: identity.tenantId,
|
|
75
|
+
...(identity.principal ? { principal: identity.principal } : {}),
|
|
76
|
+
...(identity.principal && identity.impersonation ? { impersonation: identity.impersonation } : {}),
|
|
77
|
+
iat: Date.now(),
|
|
78
|
+
};
|
|
68
79
|
return signToken(PREFIX, secret, claim);
|
|
69
80
|
}
|
|
70
81
|
/** Verify a tenant token string → its claim, or null (bad prefix/shape/signature). */
|
|
@@ -79,6 +90,14 @@ export async function verifyTenantToken(secret, token) {
|
|
|
79
90
|
// Parse, don't trust: the signature proves WE minted it, the parse proves the
|
|
80
91
|
// fields are still the ones a pin is made of (a format bump fails closed).
|
|
81
92
|
tenantIdSchema.parse(claim.tenantId);
|
|
93
|
+
if (claim.principal !== undefined)
|
|
94
|
+
principalId.parse(claim.principal);
|
|
95
|
+
if (claim.impersonation !== undefined) {
|
|
96
|
+
// A stamp names who was being impersonated; without the person it means nothing.
|
|
97
|
+
if (claim.principal === undefined)
|
|
98
|
+
return null;
|
|
99
|
+
impersonationStamp.parse(claim.impersonation);
|
|
100
|
+
}
|
|
82
101
|
return claim;
|
|
83
102
|
}
|
|
84
103
|
catch {
|
|
@@ -102,7 +121,15 @@ export function tenantTokenAuth(secret, actor) {
|
|
|
102
121
|
const claim = await verifyTenantToken(secret, presented);
|
|
103
122
|
if (!claim)
|
|
104
123
|
return null;
|
|
105
|
-
|
|
124
|
+
const tenantId = tenantIdSchema.parse(claim.tenantId);
|
|
125
|
+
if (claim.principal === undefined)
|
|
126
|
+
return { actor, tenantId };
|
|
127
|
+
const onBehalfOf = {
|
|
128
|
+
principal: principalId.parse(claim.principal),
|
|
129
|
+
tenantId,
|
|
130
|
+
...(claim.impersonation ? { impersonation: impersonationStamp.parse(claim.impersonation) } : {}),
|
|
131
|
+
};
|
|
132
|
+
return { actor, tenantId, onBehalfOf };
|
|
106
133
|
};
|
|
107
134
|
}
|
|
108
135
|
//# sourceMappingURL=tenant-token.js.map
|
package/dist/tenant-token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-token.js","sourceRoot":"","sources":["../src/tenant-token.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tenant-token.js","sourceRoot":"","sources":["../src/tenant-token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,QAAQ,IAAI,cAAc,GAM3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAA0B,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,MAAM,MAAM,GAAG,MAAM,CAAC;AAatB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,QAA6F;IAE7F,MAAM,KAAK,GAAqB;QAC9B,CAAC,EAAE,CAAC;QACJ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;KAChB,CAAC;IACF,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,KAAa;IACnE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAA0B,CAAC;QACzC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/B,8EAA8E;QAC9E,2EAA2E;QAC3E,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,iFAAiF;YACjF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC/C,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,KAAsB;IACpE,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC9D,MAAM,UAAU,GAAe;YAC7B,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;YAC7C,QAAQ;YACR,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/control-plane-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.131.0",
|
|
4
4
|
"description": "HTTP surface over HostAdmin — the audited control-plane transport (control-plane.md §4.5)",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"hono": "^4.13.9",
|
|
26
|
-
"@substrat-run/
|
|
27
|
-
"@substrat-run/
|
|
28
|
-
"@substrat-run/
|
|
26
|
+
"@substrat-run/kernel": "^0.131.0",
|
|
27
|
+
"@substrat-run/contracts": "^0.131.0",
|
|
28
|
+
"@substrat-run/psl": "^0.2.5"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@hono/node-server": "^1.13.0",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"tsx": "^4.19.0",
|
|
37
37
|
"typescript": "^7.0.0",
|
|
38
38
|
"vitest": "^3.2.7",
|
|
39
|
-
"@substrat-run/adapter-sqlite": "^0.
|
|
40
|
-
"@substrat-run/vertical-host": "^0.
|
|
39
|
+
"@substrat-run/adapter-sqlite": "^0.131.0",
|
|
40
|
+
"@substrat-run/vertical-host": "^0.131.0"
|
|
41
41
|
},
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public"
|