@substrat-run/kernel 0.78.0 → 0.79.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/permission-checker.d.ts +2 -2
- package/dist/permission-checker.d.ts.map +1 -1
- package/dist/permission-checker.js +7 -3
- package/dist/permission-checker.js.map +1 -1
- package/dist/secret-box.d.ts +2 -1
- package/dist/secret-box.d.ts.map +1 -1
- package/dist/secret-box.js +5 -2
- package/dist/secret-box.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Decision, type EntityRef, type Node, type PermissionKey, type CheckSubject, type PrincipalId } from '@substrat-run/contracts';
|
|
1
|
+
import { SubstratError, type Decision, type EntityRef, type Node, type PermissionKey, type CheckSubject, type PrincipalId } from '@substrat-run/contracts';
|
|
2
2
|
/**
|
|
3
3
|
* The evaluation seam (D-16): the MODEL is kernel-owned, the evaluation engine
|
|
4
4
|
* is an adapter — the built-in default is a constrained relationship-tuple
|
|
@@ -26,7 +26,7 @@ export declare const asPrincipal: (id: PrincipalId) => CheckSubject;
|
|
|
26
26
|
* so the host can record the denial (actor, permission, where) without re-parsing the
|
|
27
27
|
* message — and a plain message-only denial simply carries neither and is not recorded.
|
|
28
28
|
*/
|
|
29
|
-
export declare class PermissionDenied extends
|
|
29
|
+
export declare class PermissionDenied extends SubstratError {
|
|
30
30
|
readonly permission?: PermissionKey;
|
|
31
31
|
readonly node?: Node;
|
|
32
32
|
constructor(message: string, detail?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../src/permission-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,CACH,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB;AAED,sDAAsD;AACtD,eAAO,MAAM,WAAW,OAAQ,WAAW,KAAG,YAA2C,CAAC;AAE1F;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,
|
|
1
|
+
{"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../src/permission-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,CACH,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB;AAED,sDAAsD;AACtD,eAAO,MAAM,WAAW,OAAQ,WAAW,KAAG,YAA2C,CAAC;AAE1F;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,EAS9E;CACF;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAC5E,QAAQ,EACR;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAClB,CAOA;AAED,4FAA4F;AAC5F,eAAO,MAAM,cAAc,EAAE,iBAM5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAapC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { objectRef, } from '@substrat-run/contracts';
|
|
1
|
+
import { objectRef, SubstratError, } from '@substrat-run/contracts';
|
|
2
2
|
/** Convenience for the overwhelmingly common case. */
|
|
3
3
|
export const asPrincipal = (id) => ({ kind: 'principal', id });
|
|
4
4
|
/**
|
|
@@ -8,11 +8,15 @@ export const asPrincipal = (id) => ({ kind: 'principal', id });
|
|
|
8
8
|
* so the host can record the denial (actor, permission, where) without re-parsing the
|
|
9
9
|
* message — and a plain message-only denial simply carries neither and is not recorded.
|
|
10
10
|
*/
|
|
11
|
-
export class PermissionDenied extends
|
|
11
|
+
export class PermissionDenied extends SubstratError {
|
|
12
12
|
permission;
|
|
13
13
|
node;
|
|
14
14
|
constructor(message, detail) {
|
|
15
|
-
super(message);
|
|
15
|
+
super('permission_denied', message, detail ? { permission: detail.permission } : {});
|
|
16
|
+
// NOT `Substrat.permission_denied`, which is what `SubstratError` would have set:
|
|
17
|
+
// `vertical-host`'s classifier and several verticals match this exact string, and
|
|
18
|
+
// the taxonomy recognises it as the code (contracts' `CODE_BY_ERROR_NAME`). A
|
|
19
|
+
// rename here would be a silent behaviour change smuggled into a refactor.
|
|
16
20
|
this.name = 'PermissionDenied';
|
|
17
21
|
this.permission = detail?.permission;
|
|
18
22
|
this.node = detail?.node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-checker.js","sourceRoot":"","sources":["../src/permission-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"permission-checker.js","sourceRoot":"","sources":["../src/permission-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,GAOd,MAAM,yBAAyB,CAAC;AA0BjC,sDAAsD;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAe,EAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IACxC,UAAU,CAAiB;IAC3B,IAAI,CAAQ;IACrB,YAAY,OAAe,EAAE,MAAkD;QAC7E,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,kFAAkF;QAClF,kFAAkF;QAClF,8EAA8E;QAC9E,2EAA2E;QAC3E,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,QAAkB;IAI9C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,gBAAgB,CAAC,sBAAsB,QAAQ,CAAC,OAAO,EAAE,EAAE;YACnE,UAAU,EAAE,QAAQ,CAAC,OAAO;YAC5B,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,UAAU;QACnB,IAAI;KACL,CAAC;CACH,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL;gBACE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,aAAa,SAAS,EAAE,CAAC;gBAClD,QAAQ,EAAE,WAAW,UAAU,EAAE;gBACjC,MAAM,EAAE,SAAS,CAAC,KAAK,CACrB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CACnE;aACF;SACF;KACF,CAAC;CACH,CAAC"}
|
package/dist/secret-box.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* every `crypto.subtle` call was a one-way digest, and every secret was a
|
|
13
13
|
* plaintext Worker binding. Nothing was per-tenant, nothing was rotatable.
|
|
14
14
|
*/
|
|
15
|
+
import { SubstratError } from '@substrat-run/contracts';
|
|
15
16
|
/**
|
|
16
17
|
* Sealed bytes plus the id of the key that sealed them.
|
|
17
18
|
*
|
|
@@ -61,7 +62,7 @@ export declare function webCryptoSecretBox(keyId: string, key: Uint8Array): Secr
|
|
|
61
62
|
* the process knew at boot. Every seam that can raise it maps it to a typed
|
|
62
63
|
* 503 naming the missing key.
|
|
63
64
|
*/
|
|
64
|
-
export declare class SecretBoxUnconfiguredError extends
|
|
65
|
+
export declare class SecretBoxUnconfiguredError extends SubstratError {
|
|
65
66
|
constructor(message: string);
|
|
66
67
|
}
|
|
67
68
|
/**
|
package/dist/secret-box.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-box.d.ts","sourceRoot":"","sources":["../src/secret-box.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C;AAqCD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAAW,UAAU,KAAG,MAI5C,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,UAKxC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CAqC5E;AAED;;;;;;;;;GASG;AACH,qBAAa,0BAA2B,SAAQ,
|
|
1
|
+
{"version":3,"file":"secret-box.d.ts","sourceRoot":"","sources":["../src/secret-box.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C;AAqCD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAAW,UAAU,KAAG,MAI5C,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,UAKxC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CAqC5E;AAED;;;;;;;;;GASG;AACH,qBAAa,0BAA2B,SAAQ,aAAa;IAC3D,YAAY,OAAO,EAAE,MAAM,EAK1B;CACF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAenC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,QAAS,SAAS,GAAG,SAAS,KAAG,OACf,CAAC"}
|
package/dist/secret-box.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* every `crypto.subtle` call was a one-way digest, and every secret was a
|
|
13
13
|
* plaintext Worker binding. Nothing was per-tenant, nothing was rotatable.
|
|
14
14
|
*/
|
|
15
|
+
import { SubstratError } from '@substrat-run/contracts';
|
|
15
16
|
/**
|
|
16
17
|
* Exported for `subject-keys.ts`, which has to move raw key BYTES through a string-shaped
|
|
17
18
|
* `SecretBox` (a DEK is 32 bytes; `seal` takes text). Deliberately not a general-purpose
|
|
@@ -80,9 +81,11 @@ export function webCryptoSecretBox(keyId, key) {
|
|
|
80
81
|
* the process knew at boot. Every seam that can raise it maps it to a typed
|
|
81
82
|
* 503 naming the missing key.
|
|
82
83
|
*/
|
|
83
|
-
export class SecretBoxUnconfiguredError extends
|
|
84
|
+
export class SecretBoxUnconfiguredError extends SubstratError {
|
|
84
85
|
constructor(message) {
|
|
85
|
-
super(message);
|
|
86
|
+
super('unavailable', message);
|
|
87
|
+
// Kept, not generalised — `mapError` matches this class today, and contracts'
|
|
88
|
+
// `CODE_BY_ERROR_NAME` reads the name back as `unavailable` across a boundary.
|
|
86
89
|
this.name = 'SecretBoxUnconfiguredError';
|
|
87
90
|
}
|
|
88
91
|
}
|
package/dist/secret-box.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-box.js","sourceRoot":"","sources":["../src/secret-box.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"secret-box.js","sourceRoot":"","sources":["../src/secret-box.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/kernel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.79.0",
|
|
4
4
|
"description": "Substrat kernel contracts and services — pure TypeScript, no platform imports (D-14)",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@substrat-run/contracts": "^0.
|
|
25
|
+
"@substrat-run/contracts": "^0.79.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.0.0",
|